1

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

由于各种业务原因,我被指示使用多阶段 Dockerfile,但我真正需要做的是将 appserver 映像和 webserver 映像结合起来。这在 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
4

1 回答 1

5

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

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

对于您的用例,请制作两个 docker 文件,一个用于应用程序,另一个用于代理/nginx,独立构建它们并独立运行/扩展它们。

如果从 nginx 提供静态内容,您只需要运行带有静态内容卷挂载的 nginx。

于 2018-10-25T12:05:10.737 回答