#はじめに
タイトルの通り、Docker ComposeでWordPress環境を構築する手順です。
WordPressの環境構築ってレンタルサーバ借りる系の記事が多いですけど、クラウドサーバに自分で構築しちゃうのも全然アリだと思います。
EC2もGCEも無料枠あるのでお得だし。
ネックは手順の複雑さだったけどそれもDocker使えばこんなに簡単に出来ちゃうし。
EC2 インスタンスの作成
AMIは「Ubuntu Server 18.04 LTS」を選択。
インスタンスは無料枠ありなら t2.micro、ないなら t3.micro がおすすめです。
注意点としてはEC2 の nano のメモリ 0.5GB だとメモリ不足になります、、
なので最低でも 1GB は必要なので micro にすること。
あとセキュリティグループの編集>ルールの追加httpとhttpsを追加しよう(ポートの開放)。
DBを操作したい場合はMySQLも。
ソースは「マイIP」などを選択してください。
※絶対に「0.0.0.0/0」にはしないでください!
誰でもアクセス可能になります!
僕は「0.0.0.0/0」にしていたら数日後にハッキングされて全データ消されました!w
インスタンスにssh ログイン
111.222.333.444は自分のIPアドレスに書き換えましょう
IPアドレスはインスタンスのページの中の「IPv4 パブリック IP」の部分です
ec2_wordpress.pemも自分のpemファイルの名前に書き換えましょう
chmod 600 ~/.ssh/ec2_wordpress.pem
ssh ubuntu@111.222.333.444 -i ~/.ssh/ec2_wordpress.pem
最初だけAre you sure you want to continue connecting (yes/no)?
と聞かれるのでyes
と入力してEnter
初期設定用シェルスクリプト
参考:公式のクイックスタート(https://docs.docker.com/compose/wordpress/
以下の内容を vi init_setting.sh
で作成して
sh ./init_setting.sh 2>&1 | tee init_setting.log
で実行する
※別にシェルにせずに1行1行打ち込んでも出来ます。手間なのでシェル化してるだけです。
公式のバージョン(https://github.com/docker/compose/releases
※2.xはインストール方法が異なるので注意
#!/bin/bash
# Docker install
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get install -y docker-ce
sudo docker version
## Docker Compose install
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo docker-compose --version
## Docker sudo 不要にする
sudo groupadd docker
sudo gpasswd -a $USER docker
sudo systemctl restart docker
2分くらいで終わります
有効化するために1度ログアウトして再ログインしてください(exit
)
再ログイン後はdockerコマンドにsudoが不要になります。
→そのはずでしたが、今改めて確認するとそんなことないっぽいです。
以下、全てsudo su -
でrootユーザになった状態で実行してください。(2022/3/9追記)
スワップ領域を増やす
そのままでも一応起動はできるのですが、t2.microインスタンスだとMySQLの容量がギリギリなのでたまにメモリ不足で落ちてしまうことがありました。
スワップ領域を増やすことで対応します。
free
dd if=/dev/zero of=/swapfile1 bs=1M count=512
chmod 600 /swapfile1
mkswap /swapfile1
swapon /swapfile1
free
参考:WordPressのサーバがメモリ不足で落ちたので、SWAP領域を追加して応急処置
Wordpress 作成
mkdir my_wordpress
cd my_wordpress/
uploads.ini作成
以下の内容をvi uploads.ini
で保存する
デフォルトだとテーマの新規登録のzipアップロードで2MB以上はエラーになるのでそれを回避するためです。
file_uploads = On
memory_limit = 64M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 600
参考:https://github.com/docker-library/wordpress/issues/10
docker-compose.yml作成
以下の内容をvi docker-compose.yml
で保存する
これは公式のクイックスタート(https://docs.docker.com/compose/wordpress) から以下3点を変更したものです。
- restart: alwaysの行を削除
- ポートを8000から80に修正
- volumes追加
このままでも実行できますがパスワードなどは変えておきましょう
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
ports:
- "3306:3306"
wordpress:
depends_on:
- db
image: wordpress:latest
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
ports:
- "80:80"
- '443:443'
volumes:
- ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
volumes:
db_data: {}
公式だと以下のコマンドはないですが、これがないとエラーになるので実行しましょう
sudo rm -rf ~/dev/dbs-data/mysql/*
(参考:https://github.com/docker-library/mysql/issues/275)
最後にdocker-composeを実行します。
docker-compose up -d
docker ps -a
あとは1分くらい待った後ブラウザからhttp://111.222.333.444
にアクセスすればWordPressのトップページが開けるはずです。
※111.222.333.444は適時自分のIPアドレスに変えてください
もし何かエラー出たらコメントか編集リクエストください〜
ちなみにこの後固定IPアドレス取得とドメイン紐付けは以下の記事が分かりやすかったです。
ご参考まで
Elastic IP アドレスの設定とRoute 53から独自ドメインの割り当て方法
ではでは。
2020/11/20 追記
1年くらいしたらディスク容量がいっぱいになってしまいました
以下の記事の通りに対応したら解決しました
# 容量確認
sudo du -h -d 1 /usr/src/
# 不要ファイル削除
sudo apt autoremove -f