Ha *_* Ja 2 docker docker-compose
Dockerfile:
FROM shawnzhu/ruby-nodejs:0.12.7
RUN \
apt-get install git \
&& npm install -g bower gulp grunt \
gem install sass
RUN useradd -ms /bin/bash devel
# Deal with ssh
COPY ssh_keys/id_rsa /devel/.ssh/id_rsa
COPY ssh_keys/id_rsa.pub /devel/.ssh/id_rsa.pub
RUN echo "IdentityFile /devel/.ssh/id_rsa" > /devel/.ssh/config
# set root password
RUN echo 'root:password' | chpasswd
# Add gitconfig
COPY .gitconfig /devel/.gitconfig
USER devel
WORKDIR /var/www/
EXPOSE 80
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml文件:
nodejs:
build: .
ports:
- "8001:80"
- "3000:3000"
volumes:
- ~/Web/docker/nodejs/www:/var/www
Run Code Online (Sandbox Code Playgroud)
命令:
$ docker-compose build nodejs
$ docker图片
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
nodejs_nodejs latest aece5fb27134 2 minutes ago 596.5 MB
shawnzhu/ruby-nodejs 0.12.7 bbd5b568b88f 5 months ago 547.5 MB
Run Code Online (Sandbox Code Playgroud)
$ docker-compose up -d nodejs
Creating nodejs_nodejs_1
Run Code Online (Sandbox Code Playgroud)
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Run Code Online (Sandbox Code Playgroud)
$ docker ps --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c24c6d0e756b nodejs_nodejs "/bin/bash" About a minute ago Exited (0) About a minute ago nodejs_nodejs_1
Run Code Online (Sandbox Code Playgroud)
你可以看到docker-compose up -d应该创建一个容器并在后台运行它,但事实并非如此.而是退出代码0.
Tru*_*gDQ 14
如果您的Dockerfile没有做任何事情(例如,要在端口80上侦听的Web服务器),它将在完成指令运行后立即被丢弃.因为Docker容器应该是"短暂的".
如果您只想启动容器并通过终端与其进行交互,请不要使用docker-compose up -d,请改用以下内容:
docker run -it --entrypoint=/bin/bash [your_image_id]
Run Code Online (Sandbox Code Playgroud)
这将启动您的容器并运行/bin/bash,-it帮助您保持终端会话与容器交互.完成工作后,按Ctrl-D退出.
我遇到了类似的问题,SQL Server 2017 容器在创建后不久就退出了。容器内运行的进程应该长时间运行,否则Docker将退出容器。在 docker-compose 场景中,我实现了 tty:true 方法,该方法记录在此处https://www.handsonarchitect.com/2018/01/docker-compose-tip-how-to-avoid-sql.html
| 归档时间: |
|
| 查看次数: |
20252 次 |
| 最近记录: |