1
我想通过使用docker build和docker run命令而不是通过组合文件来启动我的docker容器。将docker-compose文件转换为构建和运行命令
我开始将撰写文件转换为命令,但我被卡住了。
撰写文件:
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"
这就是我来了这么远
生成命令(这个工作当我运行它):
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
我已经更换卷到dockerfile如下:
FROM node:4.3.2
RUN useradd --user-group --create-home --shell /bin/false app &&\
npm install --global [email protected]
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的启动和立即停止。有人可以告诉我我做错了什么或错过了什么。
如果您想了解更多信息,请询问。
在此先感谢!
我想我找到了一个修复程序。在四面观察运动时,我发现容器卷的UI,并没有显示本地文件夹,所以我手动添加了它。
这是否意味着安装卷的命令不正确?
最后泊坞窗运行命令我使用:
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
当我手动添加使用动态接口它工作正常体积。 泊坞检查结果:
"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": ""
}
],
谢谢@Robert您anwser,它已经帮助了很多,但我它仍然没有相当的工作。我已经对Node.js的docker run命令做了一些修改:1.我使用了绝对路径而不是$(pwd),因为它不起作用(我认为它有一些与我一起使用Docker toolbox for windows) 。 2.我添加了第二卷,我想你只添加了一个(对不对?)。但是,当我启动nodejs容器时,出现以下错误:'错误:无法找到模块'/ home/app/chat/server.js'。 – Jan
我使用的运行命令是:'docker run --network mynet -p 8080:8080 -e NODE_ENV = development -v/home/app/chat/node_modules -v // c/path/to/node_js:/ home/app /聊天 - 名称node_js -d testenvironment/node_js节点server.js' – Jan
您的音量源存在于您的Windows'家目录吗?我相信这不是默认允许的,否则 – Robert