はじめに
こんばんは。
Dockerネタです。
前々からローカル環境・検証環境でDockerfileを分けたいなと思っていて、ファイルを分けずにどうにかできないかと考えていたのですが、マルチステージビルドというのがあり、今回試してみました。
本題
Dockerfile
# ローカル & 検証どちらも FROM php:8.3-apache AS base RUN apt-get update \ && apt-get install -y libzip-dev \ && docker-php-ext-install zip RUN apt-get update \ && apt-get install -y libicu-dev \ && docker-php-ext-install intl RUN docker-php-ext-install pdo_mysql # 検証のみ FROM base AS staging RUN docker-php-ext-install opcache COPY docker/php/opcache.ini /usr/local/etc/php/conf.d/
docker-compose.yml
services: web: platform: linux/amd64 build: context: . dockerfile: Dockerfile target: base
docker-composeでは targetを base
にすることによりopcacheは入らず 検証環境では targetを staging
にすることで opcacheがinstallされます。
終わりに
今まで .local
とか .staging
とかのDockerfileを作ってたので、これはとても助かります。
もっと積極的に使っていこうと思いました。
現場からは以上です。