如何缩小此docker映像?

时间:2018-11-10 12:49:25

标签: php apache docker dockerfile

我有以下dockerfile:

FROM php:7.2-apache
LABEL name "medico-app"
COPY composer.json composer.lock ./
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
RUN apt-get update && apt-get install -y --no-install-recommends git zip && composer install
COPY . /var/www/html
EXPOSE 80

构建此映像时,其大小约为500 Mbs。我正在尝试将此图像压缩到<100 Mb,以便可以在Zeit Now上使用它。根据我在docker文档中阅读的内容,多阶段构建有时有助于缩小图像。我目前的想法是将dockerfile分为两个阶段,一个阶段是使用compose安装依赖项,另一个阶段是仅拥有phpapache。我似乎无法正确解决问题。有什么建议吗?

这是我到目前为止所拥有的:

# first stage
FROM composer:latest
COPY composer.json composer.lock ./
RUN composer install

在第二阶段,我尝试了

FROM httpd:2.4-alpine
LABEL name "medico-app"
COPY --from=0 /app/vendor ./vendor
COPY . /usr/local/apache2/htdocs/
EXPOSE 80

但是,当我现在运行容器时,不提供php文件,我只是将它们视为文本。我可能在这里用PHP / Apache缺少了一些东西。

编辑:

我也在第二阶段尝试过此方法,但是我无法使它起作用:

FROM php:7.2-alpine
LABEL name "medico-app"
RUN apk --no-cache update && apk --no-cache add apache2 openrc
COPY --from=0 /app/vendor ./vendor
COPY . /var/www/
EXPOSE 80

现在,当我打开本地主机时,看不到应该看到的PHP文件。我只是看到默认的it works页面。

1 个答案:

答案 0 :(得分:0)

缩小docker映像的一般技巧:

  1. 使用最小的基本映像,例如高山版本。在这种情况下,您可以使用php:7.2-alpine之类的东西,并使用apk安装apache。
  2. 使用apt-get时,请遵循best practices。特别要添加&& rm -rf /var/lib/apt/lists/*
  3. 尝试使用gulp minify之类的东西来最小化添加到图像中的代码。