Alpine Linuxをベースにして、気軽に立てたりつぶしたりする開発環境用途をコンセプトにDocker Hubにも上げてみた。
コンテナひとつでWordPressが動いてくれたほうが楽なので、Apacheもphpもmariadbも全部突っ込む。docker-compose使えよって言われそうだけども。
Alpine Linuxのapkでapache2を入れると、公式のapacheイメージとはデフォルトの設定が異なっていたり、自分で作らないと”/run/apache2″フォルダがないって怒られたりする。mariadbも同様に、apkで入れると自分で”mysql_install_db”を呼んでインストールする必要があったりと、注意点はいろいろあるがだいたいこんな感じで動くようになる。
FROM alpine
RUN apk --no-cache add php7 php7-mbstring php7-mysqli php7-opcache php7-xml php7-apache2 curl \
mariadb mariadb-client \
apache2 apache2-ssl sed ;\
mysql_install_db --user=mysql ;\
mkdir /run/apache2 ;\
sed -i -e "s/AllowOverride None/AllowOverride ALL/" /etc/apache2/httpd.conf ;\
echo "LoadModule rewrite_module modules/mod_rewrite.so" >> /etc/apache2/httpd.conf
WordPressを取ってくる部分は公式のWordPressイメージを参考にしつつ、Alpineにおけるapacheの初期設定のDocument rootに展開する。
ENV WORDPRESS_VERSION 4.9.8
ENV WORDPRESS_SHA1 0945bab959cba127531dceb2c4fed81770812b4f
RUN set -ex; \
curl -o wordpress.tar.gz -fSL "https://wordpress.org/wordpress-${WORDPRESS_VERSION}.tar.gz"; \
echo "$WORDPRESS_SHA1 *wordpress.tar.gz" | sha1sum -c -; \
# upstream tarballs include ./wordpress/ so this gives us /usr/src/wordpress
mkdir /usr/src ;\
tar -xzf wordpress.tar.gz -C /usr/src/; \
rm wordpress.tar.gz; \
mv /usr/src/wordpress /usr/src/htdocs ;\
rm -r /var/www/localhost/htdocs ;\
mv /usr/src/htdocs /var/www/localhost/htdocs ;\
chown -R apache:apache /var/www/localhost/htdocs
あとは各種WordPressに必要な設定を起動時に渡すために環境変数と、それを扱うシェルを用意してやればいい。
ENV DB_USER=user DB_PASSWORD=password DB_NAME=wordpress WP_DEBUG=false WP_SQL="/wp.sql" WP_DOMAIN=""
COPY scripts /
RUN chmod +x /init.sh ;\
chmod +x /start.sh ;\
apk del curl
ENTRYPOINT [ "/init.sh" ]
CMD ["/start.sh"]
詳しいShellの中身はGithubに置いたコード見るべし。
DockerHubにも上げてみたので、そっちもどうぞ。
とりあえず動かしたいなら
docker run -p 443:443 -p 80:80 algernon2haworthia/alpine_wordpress
で動くはずだ。