2

Apache などを含む Dockerfile、追加のインストール、およびプロジェクトを作成するために /var/www/html にコピーされるコードがあります。イメージをローカルで作成した後、それを .tar ファイルとしてエクスポートし、そのイメージを portiner にアップロードします。Portainer は私の生産的な環境です。ただし、ソフトウェアを使用しているバージョンとサービスを更新するたびに、サイズが 800MB の新しいイメージ全体を更新する必要があります。Portainer にはさらに複数のマネージャーがあるため、各マネージャーにアップロードする必要があります。

コピー部分で挿入されたコード以外はすべて同じままなので、COPY HRmAppBare/ /var/www/html2つのイメージを作成することができればと考えました。インストール全体用の 1 つのイメージ (例: 1.0-BaseInstall) と、私のコードのみを格納する 2 番目のイメージ (例: 1.9-backend)。次に、バージョンの更新ごとに、新しいコードを含むイメージをアップロードするだけでよく、たとえばFrom 1.0-BaseInstall. BaseInstall が変更された場合 (これはめったにありません)、そのための新しいイメージを作成するだけで済みます。

私はそれについて何も見つけることができなかったので、このアプローチが適用可能かどうか、また可能であれば、これをどのように構築する必要があるかを知りたいです。

#start with base Image from php 
FROM php:7.3-apache

#install system dependencies and enable PHP modules

RUN apt-get update && apt-get install -y \
      libicu-dev \
      vim \
      cron \
      libpq-dev \
      libmcrypt-dev \
      default-mysql-client \
      zip \
      unzip \
      libzip-dev \
    && docker-php-ext-configure zip --with-libzip \
    && docker-php-ext-install zip \
    && rm -r /var/lib/apt/lists/* \
    && docker-php-ext-configure pdo_mysql --with-pdo-mysql=mysqlnd \
    && docker-php-ext-install \
      intl \
      mbstring \
      pcntl \
      pdo_mysql \
      opcache \
      gettext \
        && pecl install mcrypt-1.0.2 \
        && docker-php-ext-enable mcrypt \
        && rm -rf /var/lib/apt/lists/*

#configure imap for mails
RUN apt-get update && \
    apt-get install -y \
    libc-client-dev libkrb5-dev && \
    rm -r /var/lib/apt/lists/*

RUN docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \
docker-php-ext-install -j$(nproc) imap

#install composer
#RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer

#change uid and gid of apache to docker user uid/gid, enable apache module rewrite
RUN usermod -u 1000 www-data && groupmod -g 1000 www-data && a2enmod rewrite

#copy the source code (Can this be in a 2nd image?)
COPY HRmAppBare/ /var/www/html

#Update apache2.conf
RUN   echo 'Alias ${COOKIE_PATH} "/var/www/html"' >> /etc/apache2/apache2.conf
RUN   echo 'Alias ${COOKIE_PATH}/ "/var/www/html/"' >> /etc/apache2/apache2.conf

#change ownership of our applications
RUN chown -R www-data:www-data /var/www/html/

ENTRYPOINT [ "sh", "-c", "rm /var/www/html/app/tmp/cache/models/* && rm /var/www/html/app/tmp/cache/persistent/* && /var/www/html/app/Console/cake schema update -y && apache2-foreground"]

EXPOSE 80
4

1 に答える 1