起因
今天寫了一個給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 協議》,轉載必須註明作者和本文連結