WordPress + SQLite3 + Docker で1分もかけずにブログを作る

最近、Dockerイメージの作成がマイブームかも知れません。
今回はイメージさえあればWordPressを1分もかけずに構築できるイメージを作成してみました。

# vi Dockerfile

FROM centos:7

# 必要なパッケージをインストール
RUN yum -y update
RUN yum -y install httpd httpd-devel zip unzip tar wget
RUN yum -y install php php-xml php-pdo php-gd php-mbstring sqlite sqlite-devel

# WordPressをインストールしてSQLite3で動作するように設定
RUN wget https://ja.wordpress.org/latest-ja.tar.gz
RUN wget https://downloads.wordpress.org/plugin/sqlite-integration.1.8.1.zip
RUN tar xvfz ./latest-ja.tar.gz
RUN unzip ./sqlite-integration.1.8.1.zip
RUN rm -f ./latest-ja.tar.gz
RUN rm -f ./sqlite-integration.1.8.1.zip
RUN mv wordpress /var/lib/wordpress
RUN chown -R apache.apache /var/lib/wordpress
RUN mv /var/lib/wordpress/wp-config-sample.php /var/lib/wordpress/wp-config.php
RUN mv sqlite-integration /var/lib/wordpress/wp-content/plugins/
RUN mv /var/lib/wordpress/wp-content/plugins/sqlite-integration/db.php \
       /var/lib/wordpress/wp-content/

# ひな形を公開ディレクトリにコピーする
RUN cp -rpf /var/lib/wordpress/* /var/www/html/

# ログイン時にひな形から展開するように定義する
RUN echo "yes n | cp -ripf /var/lib/wordpress/* /var/www/html/ > /dev/null 2>&1" >> /root/.bash_profile

EXPOSE 80
VOLUME /var/www/html

RUN systemctl enable httpd

EXPOSE 80

# docker run --privileged -itd -p 8080:80 -v /root/wordpress/public_html:/var/www/html wordpress-sqlite bash -l -c "/sbin/init"

ブログの実態はホスト側で持つので保管先のディレクトリを作成
# mkdir -p /root/wordpress/public_html
# chmod 777 /root/wordpress/public_html

コンテナ起動
# docker run –privileged -itd -p 8080:80 -v /root/wordpress/public_html:/var/www/html wordpress-sqlite bash -l -c “/sbin/init”

ブラウザで http://127.0.0.1:8080 にアクセスしてWordPressのインストール画面が表示されれば成功です。

MySQLのコンテナを作成してDBとユーザを作ってボーリュームの指定をして・・・
というのが面倒だったので小規模ならSQLite3でもいいでしょ?っというノリで作ってみました。

Apacheを使いましたが、よくよく考えて見ればNginxでも良かったなと失敗した感が・・・。
そのうち、Nginxとphp-fpmとSQLite3を組み合わせたDockerイメージを作成してみたいと思います。

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(Spamcheck Enabled)

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)