Node.js Docker构建和应用程序的干配置
首先,这篇文章比我想象的要长得多,tl;博士如何使用docker使配置干燥(我假设使用env变量) 我正在开发一个带有mongodb数据库的node.js服务器,我正在切换到docker,以(希望)简化我的环境并使其与我的服务器保持一致。让我首先说,我肯定不了解整个docker容器的生命周期,但我在不断学习。我无法找到一个解决方案,我试图做了很多搜索后。我正在将Docker for Windows与Hyper-V一起使用。(底部的Node.js Docker构建和应用程序的干配置,node.js,mongodb,docker,docker-compose,dockerfile,Node.js,Mongodb,Docker,Docker Compose,Dockerfile,首先,这篇文章比我想象的要长得多,tl;博士如何使用docker使配置干燥(我假设使用env变量) 我正在开发一个带有mongodb数据库的node.js服务器,我正在切换到docker,以(希望)简化我的环境并使其与我的服务器保持一致。让我首先说,我肯定不了解整个docker容器的生命周期,但我在不断学习。我无法找到一个解决方案,我试图做了很多搜索后。我正在将Docker for Windows与Hyper-V一起使用。(底部的Docker版本) 因此,我希望能够配置 数据库名称 数据库用户
Docker版本
)
因此,我希望能够配置
- 数据库名称
- 数据库用户
- 数据库密码
- 应用程序端口
- 还有其他一些事情
- Docker构建阶段(设置数据库)
- 节点应用程序(用于连接到数据库)
当前设置 目前我有一个docker compose文件,如下所示(./docker compose.yml) Mongo Dockerfile(./build/Mongo/Dockerfile) initDB.js脚本(./build/mongo/initDB.js)
docker版本
Client:
Version: 1.13.0
API version: 1.25
Go version: go1.7.3
Git commit: 49bf474
Built: Tue Jan 17 21:19:34 2017
OS/Arch: windows/amd64
Server:
Version: 1.13.0
API version: 1.25 (minimum version 1.12)
Go version: go1.7.3
Git commit: 49bf474
Built: Wed Jan 18 16:20:26 2017
OS/Arch: linux/amd64
Experimental: true
额外学分
如何将数据库信息保存在容器外部以进行备份等,并查看文件?我是否需要将主机上的目录映射到容器中的data/db?我是否正确地这样做
编辑:这似乎是解决“额外学分”问题的好办法
# Image to make this from
FROM mongo:3
# Add files into the container for db setup
ADD initDB.js /tmp/
ADD createDBAdmin.js /tmp/
ADD mongod.conf /data/configdb
# Map the host directory mongo/myapp to /data
VOLUME /mongo/myapp:/data
RUN ls /data/*
RUN mongod -f /data/configdb/mongod.conf && sleep 5 && mongo ${DB_NAME} /tmp/createDBAdmin.js && sleep 5 && mongo ${DB_NAME} /tmp/initDB.js
CMD mongod --smallfiles --storageEngine wiredTiger
db.createUser(
{
user: "${DB_USER}",
pwd: "${DB_PASS}",
roles: [
{ role: "dbOwner", db: "${DB_NAME}" }
]
},
{
w: "majority",
wtimeout: 5000
}
);
// For some reason this is needed to save the user
db.createCollection("test");
Client:
Version: 1.13.0
API version: 1.25
Go version: go1.7.3
Git commit: 49bf474
Built: Tue Jan 17 21:19:34 2017
OS/Arch: windows/amd64
Server:
Version: 1.13.0
API version: 1.25 (minimum version 1.12)
Go version: go1.7.3
Git commit: 49bf474
Built: Wed Jan 18 16:20:26 2017
OS/Arch: linux/amd64
Experimental: true