将docker-compose文件转换为构build和运行命令

我想通过使用docker构build和docker运行命令而不是通过撰写文件来启动我的docker容器。

我开始将撰写文件转换为命令,但我卡住了。

撰写文件:

version: '2' services: node: build: ./node_js command: node server.js depends_on: - mongo links: - mongo environment: NODE_ENV: development ports: - '8080:8080' volumes: - ./node_js:/home/app/chat - /home/app/chat/node_modules mongo: build: ./mongo ports: - "27017:27017" 

这是我到目前为止所提出的

构build命令(这个工程,当我运行它):

 docker build --tag testenvironment/node_js ./node_js 

运行命令:

 docker run -p 8080:8080 --link mongoDB:testenvironment/mongo --name nodejs -d testenvironment/mongo node server.js 

我已经将VOLUMESreplace为dockerfile,如下所示:

 FROM node:4.3.2 RUN useradd --user-group --create-home --shell /bin/false app &&\ npm install --global npm@3.7.5 ENV HOME=/home/app COPY package.json npm-shrinkwrap.json $HOME/chat/ RUN chown -R app:app $HOME/* USER app WORKDIR $HOME/chat RUN npm install VOLUME ./node_js:/home/app/chat VOLUME /home/app/chat/node_modules CMD ["node", "index.js"] 

我虽然这是一切,但是当我运行命令Node.js启动和立即停止。 有人可以告诉我我做错了什么或我错过了什么。

如果您想了解更多信息,请询问。

提前致谢!

我想我find了一个修复。 虽然在运动学环顾四周,我发现容器卷的UI,并没有显示本地文件夹,所以我手动添加它。

这是否意味着安装卷的命令不正确?

最终docker运行命令我用:

 docker run --network mongo_node_network -p 8080:8080 -e NODE_ENV=development -v //c/path/to/node_js:/home/app/chat -v /home/app/chat/node_modules --name node_js -d testenvironment/node_js node index.js 

当我手动添加使用Kinematic界面的音量,它工作正常。 Docker检查结果:

 "Mounts": [ { "Type": "bind", "Source": "/c/Users/Jan/Desktop/PrototypeEnvironment/Software/PrototypeEnvironment/TestEnvironmentBuildTest/node_js", "Destination": "/home/app/chat", "Mode": "", "RW": true, "Propagation": "" }, { "Type": "bind", "Source": "/mnt/sda1/var/lib/docker/volumes/df707fea2364811c9377276e8fdbbd16d9af55720475f436b6206e77806bdb50/_data", "Destination": "/home/app/chat/node_modules", "Mode": "", "RW": true, "Propagation": "" } ], 

修复图像名称和使用networking,而不是链接。 这大致相当于你的docker-compose:

 docker network create mynet docker build -t testenvironment/node_js ./nodejs docker build -t testenvironment/mongo ./mongo docker run -d --network mynet -p 27017:27017 --name mongo testenvironment/mongo docker run --network mynet -p 8080:8080 -e NODE_ENV=development -v $(pwd)/node_js:/home/app/chat --name nodejs -d testenvironment/node_js node server.js 

删除您在Dockerfile中添加的VOLUME。

正如@BMitch所build议的那样, 由于您使用的是D4W,所以请确保您安装的目录位于与Docker虚拟机共享的驱动器上。 Docker工具箱的菜单可能与这些文档有所不同: 在这里输入图像说明