Docker 树阶段

Docker muti-stage

是否可以将多阶段 Dockerfile 的一个阶段复制到另一个阶段?

出于各种业务原因,我被指示使用多阶段 Dockerfile,但我真正需要做的是结合应用服务器映像和网络服务器映像。这在 docker-compose 中很好,因为您可以参考每个部分 - 但我不确定这是否可以通过 GCP 和 Kubernetes 完成。

我的 Dockerfile 代码如下。

FROM php:7.1-fpm as appserver

RUN apt-get update && apt-get install -y libpq-dev \
    && docker-php-ext-install pdo pdo_pgsql pgsql
RUN apt-get update && \
     apt-get install -y \
         zlib1g-dev \
         && docker-php-ext-install zip

COPY ./app /var/www/html

FROM nginx:stable-alpine as webserver
COPY ./app /var/www/html/
COPY vhost-prod.conf /etc/nginx/conf.d/default.conf

不确定,你想通过上面的 Dockerfile 实现什么。

  • 多阶段构建不是为了上述目的
  • 你不能在多阶段构建中抛出任何问题并解决它
  • 多阶段构建是构建 binaries/code 并将其复制到最终图像,这样您就不会将开发工具带入生产

对于您的用例,请制作两个 docker 文件,一个用于应用程序,另一个用于 proxy/nginx,独立构建它们并独立 run/scale 它们。

如果从 nginx 提供静态内容,您只需要 运行 nginx 装载静态内容。