我有一个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
时,一切正常,但是在运行PHP
之后,NGINX
和docker-compose up -d
容器都退出了
当我查看已停止的PHP
容器的日志时,可以从ls获取输出,但不确定为什么我的容器会退出。
我是Docker的新手,所以请不要介意这是一个愚蠢的问题。
答案 0 :(得分:2)
容器的寿命就是command
的寿命,因此您的容器将在运行command: ls
时退出,其中Nginx容器取决于php
,PHP将在执行后退出ls
。
depends_on:
- php
请勿为PHP覆盖command
。删除command
,它应该可以工作。