php - 如何在 docker-compose 中使用官方作曲家图像?
问题描述
这是我的 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
推荐阅读
- c# - 如何将 c# 对象传递给 Oracle?
- android - 更新列表中的对象
- charts - LightningChart js中的样式/删除轴重叠指示器
- spring - 为什么即使使用了@EnableConfigurationProperties 或@ConfigurationPropertiesScan,@ConstructorBinding 也不起作用?
- java - 如何拥有一个只能由另一个特定类实例化的类
- c# - 关于文件路径和打开这些文件的问题 C#
- c - 如何不更改其他终端程序中的颜色?
- azure - 如何检查 blob 存储上的旧备份 (SQL SERVER)。我想检查容器中是否存在最近一年的备份文件
- python-3.x - Python Selenium 查找子类的主类
- javascript - Phonegap:有没有办法从外部 url 获取 JSON 数据?