結局、1インスタンスですべてのDockerコンテナを稼働させることに
色々と試行錯誤した結果、マシンタイプe2-microを1インスタンス立ち上げ、7つのコンテナを稼働させることにしました。(nginx-proxy、letsencrypt-nginx-proxy-companion以外の5コンテナは仮想ホストとして稼働)
- jwilder/nginx-proxy…リバースプロキシ
- jrcs/letsencrypt-nginx-proxy-companion…nginx-proxyと連携して仮想ホストをSSL化する
- bitnami/wordpress…Wordpress(本サイト)
- bitnami/mariadb…mariadb(Wordpress情報の保存)
- grafana/grafana…Grafana(InfluxDBの可視化)
- influxdb…InfluxDB(時系列データベース)
- docker-nginx-redirect…旧サイト(windesign.work)から本サイト(www.windesign.work)へのリダイレクト
試したところ、メモリ1GBのe2-microで問題なさそうでした。f1-microを2インスタンス使ってとか考えてたんですが、下記の点から有利と考えました。(月額料金は、414円/月から652円/月と少し高くなりますが…)
- リバースプロキシとSSL対応のコンテナで楽をするには、一つのDockerマシン上で動かす必要がある。
- 仮想ホスト用コンテナを起動するだけで、動的にリバースプロキシに参加(SSL対応含めて)してくれる。
- マシンタイプをe2-mediumまで上げれば、かなりの仮想ホストを稼働できそう。
以下、マシンタイプごとの月額料金を示しておきます。
マシンタイプ | 月ごとの料金(レートは、2020/5/24現在) | スペック | 備考 |
f1-micro | $3.88 (¥414.44) | CPU:0.2 MEM:0.6GB | 1インスタンスだけなら無料枠内 |
g1-small | $13.8 (¥1472.35) | CPU:0.5 MEM:1.7GB | |
e2-micro | $6.11 (¥652.54) | CPU:0.25 MEM:1GB | |
e2-small | $12.23 (¥1305.08) | CPU:0.5 MEM:2GB | |
e2-medium | $24.46 (¥2610.16) | CPU:1 MEM:4GB |
ハマった点のいくつか
WordPressの設定を変更できない
解決した手順は、以下の通り。
- docker-compose.ymlの環境変数(environment)に「WORDPRESS_SCHEME=https」を追加
- docker-compose up -d で初回起動(初回起動がキモ。)
- WORDPRESS_SCHEME環境変数は初回起動時に作られるvolumeに反映され、2回目以降の起動に対しては反映されない。
- WordPressの一般設定のWordpressアドレスとサイトアドレスが「https://~」になっていることを確認
- 「http://」のままだったら、WORDPRESS_SCHEME環境変数が反映されていないので、(volumeを削除して)最初からやり直す。
- UpdraftPlusプラグインをインストール
- 移行元サイトのUpdraftPlusバックアップをアップロード
- ウチではDropboxに毎日転送される設定にしています。
- ここで、http 413エラーが出て失敗。解決は、こちら
- アップロードが完了したら復元
- 「古いphpでバックアップされた」などと表示されますが、気にせず継続。
- ダッシュボードのサイトヘルス画面が「良好」になっていることを確認
UpdraftPlusバックアップのアップロードに失敗する
原因は、nginx-proxyにあった模様。デフォルトでは、アップロードサイズが10MBに制限されている。
- docker-compose.yml(nginx-proxy)の、services/nginx-proxy/volumesセクションに下記の1行を追加
- $PWD/nginx-proxy/my_proxy.conf:/etc/nginx/conf.d/my_proxy.conf:ro
- ./nginx-proxyディレクトリにmy_proxy.confファイルを作成し、下記の1行を記述(アップロードサイズ上限を100MBにする)
- client_max_body_size 100m;