CentOSでNginx+PHP環境のdockerfileを作成
前回から随分空いてしまいましたが、SymfonyやらLaravelとかの環境を作成しようと思い、CentOS+Nginxでベースとなりそうなdockerfileを作成してみました。
「各ユーザ設定」のパスワードなどは適時変更して下さい。
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等の軽量なものに切り替えるか考えなければなりませんね。