docker-compose 啟動容器後秒退問題小記

pigzzz發表於2020-04-21

起因

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

相關文章