Goe_Goe_06
@Goe_Goe_06

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Docker AmazonLinux2023+PHP環境時のphp-fpの挙動について

初めて投稿させて頂きます。

Docker-composeで以下のページを参考に「AmazonLinux2023」イメージを使い
PHP8.X環境を構築したのですがブラウザでアクセスすると「503エラー」になる現象が発生しました。

参考ページ

階層

│  docker-compose.yml
│          
├─config
│   Dockerfile
│   php.ini
│      
└─src
    index.php

docker-compose

version: "3"
services:
  web:
    container_name: web
    build: ./config/
    volumes:
      - ./config/php.ini:/etc/php.ini
      - ./logs/:/var/log/httpd/
      - ./src/:/var/www/html/
    tty: true
    privileged: true
    restart: always
    command: bash -c "exec httpd -DFOREGROUND"
    ports:
      - "8080:80"

Dockerfile

# ベースイメージ
FROM amazonlinux:2023

# 必要なパッケージをインストール
RUN dnf -y update && dnf -y install \
    wget \
    tar \
    gzip \
    gcc \
    make \
    procps \
    which \
    git \
    autoconf \
    httpd \
    httpd-devel \
    bison \
    re2c \
    vim \
    libxml2-devel \
    libcurl-devel \
    libpng-devel \
    libjpeg-devel \
    libicu-devel \
    libxslt-devel \
    readline-devel \
    libedit-devel \
    libzip-devel \
    sqlite-devel \
    bzip2-devel \
    oniguruma-devel \
    php \
    php-fpm \
    php-mbstring \
    php-mysqlnd \
    php-pdo \
    php-xml \
    php-gd \
    php-curl \
    php-pear \
    php-devel \
    php-bcmath

# xdebugをインストール
RUN pecl install xdebug

# PHP動作確認ファイル
WORKDIR /var/www/html
RUN echo "<?php phpinfo(); ?>" > ./index.php

# php-fpm 起動設定
RUN mkdir -p /run/php-fpm && chmod 777 /run/php-fpm

# ポート80を開放
EXPOSE 80

# php-fpmとhttpdを同時に起動
CMD ["/bin/bash", "-c", "php-fpm -D && httpd -D FOREGROUND"]

※今回のコンテナではNginxは利用しない想定です。 2025.01.09 追記

上記設定後、docker-compose up -d --build を行い、「localhost:8080/index.php」にアクセスすると「503 Service Unavailable」になる。

調べたところ下記URLに記載のように「php-fpm」がコンテナ起動時に動いてないみたいでコンテナ内に入り以下のコマンドを実行すると「503 Service Unavailable」が解消されました。

しかし、コンテナを起動するたびにコマンドを実行するのはコンテナ起動時に実行するようにdocker-composeやDockerfileに記述したのですが、現象が解消されません。

コンテナ起動時に「php-fpm」が実行できるようにするにはどのようにしたらいいか教えて頂ますようお願い致します。

0

2Answer

docker-compose.yaml
のcommandでDockerfileのCMDが上書きされているのでは?

docker-compose.yamlのCMDを消せばDockerfileのCMDが使われてうまく行くかもしれません

0Like

Your answer might help someone💌