CentOSでNginx+PHP環境のdockerfileを作成

前回から随分空いてしまいましたが、SymfonyやらLaravelとかの環境を作成しようと思い、CentOS+Nginxでベースとなりそうなdockerfileを作成してみました。

tabucchi.hatenablog.jp

「各ユーザ設定」のパスワードなどは適時変更して下さい。

FROM centos:7.6.1810

#--------------------------------
#Timezone設定
#--------------------------------
ENV TZ="Asia/Tokyo"

#--------------------------------
#各ユーザの設定
#--------------------------------
ENV root_password=rootpassword
ENV developer_user_name=developerserpername
ENV developer_user_password=developeruserpassword

#--------------------------------
#locale設定
#--------------------------------
RUN localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG="ja_JP.UTF-8" \
    LANGUAGE="ja_JP:ja" \
    LC_ALL="ja_JP.UTF-8"
RUN sed -i -e '/override_install_langs/s/$/,ja_JP.utf8/g' /etc/yum.conf

#--------------------------------
#rootパスワード設定
#--------------------------------
RUN echo "${root_password}" | passwd --stdin root

#--------------------------------
#開発者グループ作成
#--------------------------------
RUN groupadd -g 61000 developer && \
    echo "%developer ALL=(ALL) ALL\n" \
    "Defaults visiblepw" >> /etc/sudoers

#--------------------------------
#開発者ユーザを作成
#--------------------------------
RUN useradd -g developer -m ${developer_user_name} && \
    (echo "${developer_user_name}:${developer_user_password}" | chpasswd) && \
    gpasswd -a ${developer_user_name} developer

#--------------------------------
#必要なものパッケージのインストール
#--------------------------------
RUN yum -y upgrade && yum clean all

#systemd設定
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \
systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;

#opensslインストール
RUN yum -y install openssl openssl-devel openssl-libs

RUN yum -y install sudo wget rsync which git tree less

#--------------------------------
#nginxインストール設定
#--------------------------------
RUN echo -e $"[nginx]\n\
name=nginx repo\n\
baseurl=http://nginx.org/packages/centos/7/\$basearch/\n\
gpgcheck=0\n\
enabled=1" >> /etc/yum.repos.d/nginx.repo

RUN yum -y install nginx && yum -y clean all

#--------------------------------
#phpインストール設定
#--------------------------------
#php7系を使いたいためremiレポジトリの入れる
RUN yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm && \
    yum -y install --enablerepo=remi remi-php73 php php-mbstring php-pdo php-gd php-xml php-bcmath php-ctype php json php-openssl php-xml

#--------------------------------
#service設定
#--------------------------------
RUN systemctl enable nginx

#--------------------------------
#systemd設定
#--------------------------------
VOLUME [ "/sys/fs/cgroup", "/run" ]

CMD ["/usr/sbin/init"]

イメージファイルのサイズがWebサーバだけで850MBとなってしまいました(CentOSベースイメージは202MB)。 Webサーバにフレームワーク突っ込んでgit管理、さらにDBサーバ作成、キャッシュサーバも・・・なんてしたら一つの環境作成するだけで数GBぐらいに膨れて圧迫していきそうです。

とりあえず、出来合えのNginxを落としてきて使用するか、Alpin等の軽量なものに切り替えるか考えなければなりませんね。