1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Docker × PHP5.4】DockerでPHP環境を作った時のつまずき

Last updated at Posted at 2024-04-19

概要

担当案件の中で、PHP5.4が動く環境を準備する必要があり、準備を進める中でいくつかエラーが発生しました。
調査の中で参考にさせていただいた内容もあったので、今後のためにメモとして記録しておきます。

参考記事

調査の際、上記のサイトに大変お世話になりました。
ありがとうございます!

Dockerfile

今回はdocker-compose.ymlを使用し、指定したフォルダ内に配置しているDockerfileをビルドしています。
また、別ファイルで環境変数を管理しているため、Pathについては適宜変更してください。

最初の段階でのDockerfileは下記です。※一部省略箇所あり

FROM php:5.4.45-apache

RUN apt-get update
RUN apt-get install -y vim htop libpq-dev libonig-dev
RUN docker-php-ext-install mbstring mysql
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf \
  && sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf \
  && sed -ri -e 's!/var/www!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf

COPY ./php.ini /usr/local/etc/php/php.ini
・
・
・

問題箇所

1. パッケージが404 Not Foundになる

エラー発生タイミングとしては、ビルドに必要なパッケージ群をインストールしているapt-get updateを実行した際に、404 Not Foundになってしまいました。

8.812 Err http://httpredir.debian.org jessie/main amd64 Packages
8.812   404  Not Found
9.361 Err http://httpredir.debian.org jessie-updates/main amd64 Packages
9.361   404  Not Found
9.367 W: Failed to fetch http://security.debian.org/dists/jessie/updates/main/binary-amd64/Packages  404  Not Found [IP: 151.101.130.132 80]
9.367
9.367 W: Failed to fetch http://httpredir.debian.org/debian/dists/jessie/main/binary-amd64/Packages  404  Not Found
9.367
9.367 W: Failed to fetch http://httpredir.debian.org/debian/dists/jessie-updates/main/binary-amd64/Packages  404  Not Found
9.367
9.367 E: Some index files failed to download. They have been ignored, or old ones used instead.
------
failed to solve: process "/bin/sh -c apt-get update" did not complete successfully: exit code: 100

原因は、パッケージのファイルの置き場所のサイトが変更されていたためエラーが発生したようです。
なので、下記のように変更してパッケージファイルの置き場所を変更すると、エラーが解消されました。

変更前
RUN apt-get update
変更後
RUN echo "deb http://archive.debian.org/debian/ stretch main" > /etc/apt/sources.list \
    && echo "deb http://archive.debian.org/debian-security stretch/updates main" >> /etc/apt/sources.list \
    && apt-get update

2. ビルドプロセスが完了しない

apt-get installを行なった際、下記のようなエラーが表示され、Dockerビルドが中断し、ビルドプロセスが完了しませんでした。
--force-yesを追加して再度実行しましたが、解決せず…。

 .
 .
3.356 7 upgraded, 11 newly installed, 0 to remove and 155 not upgraded.
3.356 Need to get 9966 kB of archives.
3.356 After this operation, 37.7 MB of additional disk space will be used.
3.356 WARNING: The following packages cannot be authenticated!
3.356   libtinfo5 libncursesw5 libncurses5 libssl1.1 xxd vim-common libgpm2
3.356   libgssapi-krb5-2 libkrb5-3 libk5crypto3 libkrb5support0 htop libonig4
3.356   libonig-dev libpq5 libpq-dev vim-runtime vim
3.357 E: There are problems and -y was used without --force-yes
------
failed to solve: process "/bin/sh -c apt-get install -y vim htop libpq-dev libonig-dev" did not complete successfully: exit code: 100

下記の内容を追加することで、プロンプトのデフォルトの選択肢が選択できるらしく、
これでビルドプロセスが途中で止まらないようにすることができました。

RUN echo '* libraries/restart-without-asking boolean true' |  
debconf-set-selections
変更前
RUN apt-get install -y vim htop libpq-dev libonig-dev
変更後
RUN apt-get install -y --force-yes vim \
    && echo '* libraries/restart-without-asking boolean true' |  debconf-set-selections \
    && apt-get install -y --force-yes htop \
    && apt-get install -y --force-yes libpq-dev \
    && apt-get install -y --force-yes libonig-dev

Dockerfile最終版

最終的に編集した後のDockerfileも記載しておきます。

FROM php:5.4.45-apache

RUN echo "deb http://archive.debian.org/debian/ stretch main" > /etc/apt/sources.list \
    && echo "deb http://archive.debian.org/debian-security stretch/updates main" >> /etc/apt/sources.list \
    && apt-get update

RUN apt-get install -y --force-yes vim \
    && echo '* libraries/restart-without-asking boolean true' |  debconf-set-selections \
    && apt-get install -y --force-yes htop \
    && apt-get install -y --force-yes libpq-dev \
    && apt-get install -y --force-yes libonig-dev

RUN docker-php-ext-install mbstring mysql
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf \
  && sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf \
  && sed -ri -e 's!/var/www!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
.
.
.
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?