docker-compose 启动容器后秒退问题小记
起因
今天写了一个给vue项目运行的基础node镜像,Dockerfile内容如下
FROM node:lts-slim
# 修改 npm yarn 加速镜像
RUN npm config set registry=https://registry.npm.taobao.org \
&& yarn config set registry https://registry.npm.taobao.org
# 更改工作目录
WORKDIR /home/node/app
然后用docker-compose来管理
version: '2'
services:
web:
container_name: node_web
build:
context: .
volumes:
- ./:/home/node/app
ports:
- 8888:8080
启动容器:docker-compose up -d
查看容器运行情况:docker-compose ps
结果容器并没有运行,运行docker-compose ps -a
命令发现,容器在启动后短时间内又停止了
知识点
查阅资料发现,docker 容器的生命周期是同容器中的前台进程相关的,如果容器内没有前台进程,容器就会自动停止。
Docker容器仅在它的1号进程(PID为1)运行时,会保持运行
解决方法
在docker-compose中添加tty: true
关键字
version: '2'
services:
web:
container_name: node_web
build:
context: .
volumes:
- ./:/home/node/app
ports:
- 8888:8080
tty: true
tty: true
的作用是为容器分配一个伪终端,就相当于docke run -t
,我的理解是这样就是把/bin/bash
当做前台进程
docker 初学者,如有错误,请指正
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: