gpt4 book ai didi

运行命令后 Docker 容器退出

转载 作者:行者123 更新时间:2023-12-02 21:03:10 24 4
gpt4 key购买 nike

我有一个 Docker Compose 文件,它创建了 3 个容器,我需要在这些容器启动后添加一些设置任务。我的想法是我将使用 Dockers command声明来完成我的设置任务。

version: "3"

services:
mariadb:
image: wodby/mariadb:$MARIADB_TAG
container_name: "${PROJECT_NAME}_mariadb"
stop_grace_period: 30s
environment:
MYSQL_ROOT_PASSWORD: $DB_ROOT_PASSWORD
MYSQL_DATABASE: $DB_NAME
MYSQL_USER: $DB_USER
MYSQL_PASSWORD: $DB_PASSWORD
volumes:
- ./mariadb-init:/docker-entrypoint-initdb.d

php:
image: wodby/drupal-php:$PHP_TAG
container_name: "${PROJECT_NAME}_php"
environment:
DB_HOST: $DB_HOST
DB_PORT: $DB_PORT
DB_USER: $DB_USER
DB_PASSWORD: $DB_PASSWORD
DB_NAME: $DB_NAME
DB_DRIVER: $DB_DRIVER
PHP_FPM_USER: wodby
PHP_FPM_GROUP: wodby
COLUMNS: 80 # Set 80 columns for docker exec -it.
volumes:
- ./Insider:/var/www/html
command: ls

nginx:
image: wodby/nginx:$NGINX_TAG
container_name: "${PROJECT_NAME}_nginx"
depends_on:
- php
environment:
NGINX_STATIC_OPEN_FILE_CACHE: "off"
NGINX_ERROR_LOG_LEVEL: debug
NGINX_BACKEND_HOST: php
NGINX_SERVER_ROOT: /var/www/html/web
NGINX_VHOST_PRESET: $NGINX_VHOST_PRESET
ports:
- '8000:80'
volumes:
- ./Insider:/var/www/html
labels:
- "traefik.http.routers.${PROJECT_NAME}_nginx.rule=Host(`${PROJECT_BASE_URL}`)"

现在问题是当我删除这个 command: ls一切正常,但有了这个, PHPNGINX运行 docker-compose up -d 后容器退出
当我检查停止 PHP 的日志时容器我可以从 ls 获取输出,但不确定为什么我的容器会退出。

我是 Docker 新手,所以请不要介意这是一个愚蠢的问题。

最佳答案

容器的生命周期就是command的生命周期,因此您的容器将在运行时退出 command: ls ,其中 Nginx 容器依赖于 php , PHP 将在执行 ls 后退出.

    depends_on:
- php

不要覆盖 command对于 PHP。删除 command它应该可以工作。

关于运行命令后 Docker 容器退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59467134/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com