这是我的 docker-compose 文件
version: '3'
services:
app:
image: php7.1-apache-stretch
container_name: php-app
volumes:
- .:/var/www/html
ports:
- 8080:80
composer:
image: composer:1.8
container_name: composer-app
volumes:
- .:/var/www/html
然而,当我运行 docker-compose up
时,唯一运行的容器是 php-app
。如何在 docker-compose 文件中运行 composer 并与我的应用程序容器通信?
最佳答案
理想情况下,您在多阶段构建中使用 Composer 镜像,以避免必须在主机上安装它及其所有依赖项。
为此创建一个像这样的 Dockerfile:
FROM composer:1.8 AS composer
FROM php:7.1-apache-stretch
COPY --from=composer /usr/bin/composer /usr/bin/composer
WORKDIR /app
COPY . .
# Place here your command that uses Composer
RUN composer install
注意:您需要查看 RUN 命令,因为我不是 PHP 开发人员....;)
现在 docker-compose.yml 看起来像这样:
version: "3"
services:
app:
build: .
image: php-app:1.0
container_name: "php-app"
ports:
- "8080:80"
您不再需要该卷,因为文件已在构建时复制到镜像中。
构建镜像并运行服务:
docker-compose up --build -d
关于php - 如何在 docker-compose 中使用官方 Composer 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55553119/