Bai*_*ily 8 docker docker-compose docker-multi-stage-build
我想创建一个多阶段构建过程,而每个 docker 文件都嵌套在它们自己的本地目录中,并为每个 Docker 文件添加了相应的依赖项。有没有办法从本地的不同目录导入 Docker 文件,而我可以使用 Docker 的FROM命令导入它,以在构建中创建多个阶段?
如果没有,我是否可以ADD将其他暂存的 Docker 文件放入当前的 Docker 文件中,然后FROM在 docker 容器中使用,在添加和使用后将其删除FROM?
也许我正在考虑以错误的方式构建多阶段。
或者我可以简单地运行FROM {path/to/docker/locally}?这对我不起作用。
到目前为止我发现的最好的解决方案是使用Dockerfile 阶段
Dockerfile:FROM php:8.1-fpm AS base
RUN apt-get update && apt-get install -y \
libzip-dev libonig-dev \
libwebp-dev # ...
RUN docker-php-ext-install zip mbstring pdo pdo_mysql gd bcmath sockets opcache soap gmp intl
# Worker
FROM base AS worker
RUN apt install -y supervisor
# CLI
FROM base AS cli
RUN apt-get install -yq git unzip
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml:FROM php:8.1-fpm AS base
RUN apt-get update && apt-get install -y \
libzip-dev libonig-dev \
libwebp-dev # ...
RUN docker-php-ext-install zip mbstring pdo pdo_mysql gd bcmath sockets opcache soap gmp intl
# Worker
FROM base AS worker
RUN apt install -y supervisor
# CLI
FROM base AS cli
RUN apt-get install -yq git unzip
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
Run Code Online (Sandbox Code Playgroud)
这将使容器高效构建并且base仅构建一次。您还可以使用其base本身作为目标。
如果您使用 Docker 20.10+,您可以执行以下操作:
# syntax = edrevo/dockerfile-plus
INCLUDE+ {path/to/docker/locally}
RUN ...
Run Code Online (Sandbox Code Playgroud)
该INCLUDE+指令由 Dockerfile 中的第一行导入。您可以在https://github.com/edrevo/dockerfile-plus阅读有关 dockerfile-plus 的更多信息
有没有办法从本地不同的目录导入 Docker 文件,而我可以使用 Docker 的 FROM 命令导入它,以在构建中创建多个阶段?
不可以。该FROM指令仅用于导入预构建的镜像,不能用于导入 Dockerfile。
如果没有,我是否可以将其他暂存的 Docker 文件添加到当前的 Docker 文件中?
不可以。该ADD指令只能将构建上下文(通常是当前工作目录)内的文件复制到容器。你不能ADD ../something /something。
或者我可以简单地从 {path/to/docker/locally} 运行吗?
不,但对您有用的一种方法是,首先构建另一个映像,说它的名称是first-image:latest,然后您可以使用COPY指令从该映像复制文件:
COPY --from=first-image:latest /some/file /some/file
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5930 次 |
| 最近记录: |