はじめに
2020年11月30日をもちまして、延長サポートを含めたCentOS 6系のすべてのサポートが終了しました。
しかしながら、社内システムなどまだまだ現役の環境はあると思いますし、
リプレース案件の確認作業のために同バージョンの開発環境が欲しいといった要望もあるかと思います。
今回、CentOS6.9で動いているシステムを保守する必要があり、過去に作った開発環境をDockerで動かそうとしたところ「yum install」でこけました。
yumのリポジトリなどがすべてアーカイブに移動しているため、デフォルトのままだとリポジトリが見つからずにエラーとなるようです。
そこで、本日はDockerを使ってCentOS6.9環境を構築する方法をまとめます。
Dockerfileについて
実行環境
- Windows10
- Docker for Windows
Dockerで構築する環境
- CentOS6.9
- PHP5.6
- Apache2.2
動いたときのDockerfileはこちらになります。
FROM centos:6.9
ENV PHP_VERSION 5.6.40
RUN sed -i "s|#baseurl=|baseurl=|g" /etc/yum.repos.d/CentOS-Base.repo \
&& sed -i "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-Base.repo \
&& sed -i "s|http://mirror\.centos\.org/centos/\$releasever|http://vault\.centos\.org/centos/6.9|g" /etc/yum.repos.d/CentOS-Base.repo
RUN rpm -Uvh https://archives.fedoraproject.org/pub/archive/epel/6/x86_64/epel-release-6-8.noarch.rpm && \
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
RUN yum install -y --enablerepo=remi --enablerepo=remi-php56 \
php \
php-devel \
php-mbstring \
php-pdo \
php-gd \
php-xml \
php-mcrypt \
php-mysql \
php-pear \
php-xdebug \
php-pecl-xdebug \
&& yum install -y \
zip \
unzip \
httpd \
gcc
RUN yum clean all
CMD ["/usr/sbin/apachectl","-DFOREGROUND"]
CentOS6.9環境用に作ったものなので、ほかのバージョンにする場合は6.9
の記述を変更してください。
PHPモジュールの記述は環境に合わせて修正してください。
変更点
① CentOS-Base.repoを修正
yumリポジトリがアーカイブされているので、参照先を書き換えます。
RUN sed -i "s|#baseurl=|baseurl=|g" /etc/yum.repos.d/CentOS-Base.repo \
&& sed -i "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-Base.repo \
&& sed -i "s|http://mirror\.centos\.org/centos/\$releasever|http://vault\.centos\.org/centos/6.9|g" /etc/yum.repos.d/CentOS-Base.repo
② PHP5.6をインストールするためのEPELリポジトリを修正
CentOSに標準搭載以外のバージョンのPHPをインストールする場合は、EPEL、REMIリポジトリの設定が必要になります。
EPELリポジトリがアーカイブされているため、URLをアーカイブ先に設定します。
REMIレポジトリはそのままで良いみたいです。
RUN rpm -Uvh https://archives.fedoraproject.org/pub/archive/epel/6/x86_64/epel-release-6-8.noarch.rpm && \
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
デフォルト設定の場合のエラーについて
① Yumリポジトリが見つからない場合のエラー
CentOS-Base.repoを修正すると直ります。
Error: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
Eg. Invalid release/repo/arch combination/
removing mirrorlist with no valid mirrors: /var/cache/yum/x86_64/6/base/mirrorlist.txt
② EPELリポジトリの設定を変えていなかった場合のエラー(アーカイブ前のURLを指定した場合)
curl: (22) The requested URL returned error: 403 Forbidden
error: skipping https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm - transfer failed
Retrieving https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
コメント