【发布时间】:2021-07-10 07:57:23
【问题描述】:
我创建了一个简单的 Dockerfile 来使用 PHP 安装 apache,然后从 composer.json 安装包。
FROM php:7-apache
WORKDIR /var/www/html
COPY ./src/html/ .
COPY composer.json .
RUN apt-get update
RUN apt-get install -y unzip
# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN composer update
当我运行 docker build -t my-web-server . 后跟 docker run -p 8080:80 my-web-server 时,一切正常并且安装包。
但是当我使用 docker-compose 文件时:
version: "3.9"
services:
ecp:
build: .
ports:
- "8080:80"
volumes:
- ./src:/var/www
然后执行docker-compose build,然后是docker-compose up 软件包没有安装,我只是将 index.php 带到容器中
我当前的文件结构:
src
|-- html
|-- index.php
composer.json
docker-compose.yaml
Dockerfile
当docker-compose 构建映像时,所有控制台输出都与docker build 相同
【问题讨论】:
-
首先运行
apt,然后运行composer(您必须为此复制其文件),然后复制您的代码。关键是,对 HTML 的每一次更改都会让你在 Dockerfile 中重复执行之后的步骤,即使它们的结果没有改变。
标签: php docker docker-compose dockerfile composer-php