gpt4 book ai didi

docker - PHP的composer软件包管理器的容器显示消息/错误:docker-compose的 “docker_composer_1 exited with code 0”

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

我正在尝试创建一个composer容器(Dockerfile),并在我的docker-compose.yml中使用此容器,但看来该容器未启动。

每次我运行docker-compose up时,我都会面对以下消息

docker_composer_1 exited with code 0



这些是我的 Dockerfiledocker-compose.yml文件:

Docker文件
#composer
FROM composer
EXPOSE 9090

docker-compose.yml
version: '3'

services:
php-fpm:
build:
context: ./php-fpm
volumes:
- ../src:/var/www

nginx:
build:
context: ./nginx
ports:
- "80:80"
volumes:
- ../src/html:/var/www/html
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/sites/:/etc/nginx/sites-available
- ./nginx/conf.d/:/etc/nginx/conf.d
depends_on:
- php-fpm

database:
build:
context: ./database
ports:
- "3306:3306"
environment:
- MYSQL_DATABASE=mydb
- MYSQL_USER=myuser
- MYSQL_PASSWORD=secret
- MYSQL_ROOT_PASSWORD=docker
volumes:
- ./database/data.sql:/docker-entrypoint-initdb.d/data.sql

phpmyadmin:
build:
context: ./phpmyadmin
environment:
- PMA_HOST=database
- PMA_PORT=3306
- MYSQL_ROOT_PASSWORD=docker
ports:
- "8080:80"
depends_on:
- database

composer:
build:
context: ./composer
volumes:
- ../src/html:/var/www/html
ports:
- "9090:80"

我不想将Composer安装到php容器中。
我认为这不是一个优雅的解决方案。

我该如何解决这个问题?

最佳答案

composer是一个程序包管理器,并且与“服务”相对,而不是作为永无止境的进程运行。composer命令旨在运行一次,执行任务并在完成任务后以状态码结尾(即,安装或更新软件包,显示软件包信息等)。如果命令成功运行,则此状态码为0;如果命令运行失败,则此状态码为非零。
结论:

The message that the container excited with status code 0 is not an indication of failure but the expected behavior of every composer [..] command.


当您启动 composer容器时,它将执行该容器的默认命令,该默认命令由 CMD中的 Dockerfile配置,并回退到 ENTRYPOINT,后者是 composer可执行文件,不带任何参数。
您可以通过运行以下命令来验证此行为:
docker-compose logs composer 
composer只是一个实用程序,因此不应在 docker-compose.yml中定义为“服务”。您可以将其保留在此处,以便能够运行快速的一次性命令,例如:
docker-compose run composer install 
...但是您必须忍受命令已退出的提示。
一般建议: docker-compose不是任务运行程序,也不是为一次性命令设计的。维护者拒绝了一些实现功能以支持此类功能的建议。
例子):
  • 实现一个选项,以跳过带有docker-compose up的某些容器的自动启动->参见此issue
  • 关于docker - PHP的composer软件包管理器的容器显示消息/错误:docker-compose的 “docker_composer_1 exited with code 0”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57628227/

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