ひとつのVPSでWordPressとDjangoを共存させる2(WordPress構築編)

今回作りたい構成は以下です。L4のロードバランサとしてNGINXを使用し、URLをベースに後ろのサービスを選択する形です。NGINXでSSLも終端します。各サービスはすべてDockerで個別に構築し、将来的に機能を分離しやすくします。

/home/ubuntu配下にすべて集約できるように、フォルダ構成を以下のように構築する予定です。今回はWordPressのみの構築となります。

docker/
├── app
│   └── wp01
│   └── wp02
│   └── dj01
│   └── dj02
├── db
│   └── mysql
│   └── pgsql
└── lb
   ├── config
   └── webroot
一時的にNGINXコンテナを立ち上げてコンフィグファイルをコピーする

一時的にNGINXのコンテナを立ち上げて、コンフィグファイルをコピーします。この手順はDocker hubのNGINXコンテナの立ち上げの中にも書かれている手順です。

$ docker run --name tmp-nginx-container -d nginx
$ docker cp tmp-nginx-container:/etc/nginx ./lb/config
$ docker rm -f tmp-nginx-container
Docker-Composeファイルを作成する

dockerフォルダ配下にdocker-compose.ymlファイルを作成し以下のように記述します。

version: "2"
services:
 db:
  image: mysql:5.7
  ports:
  - 3306:3306
  environment:
   MYSQL_ROOT_PASSWORD: rootpassword
  command:
   - --table_definition_cache=400
   - --performance_schema=0
  restart: always
  volumes:
  - ./db/mysql/data:/var/lib/mysql
 lb:
  image: nginx
  restart: always
  ports:
   80:80
   443:443
  volumes:
   ./lb/config/nginx:/etc/nginx
   /etc/letsencrypt:/etc/letsencrypt
   ./lb/webroot:/usr/share/nginx/html
  wp01:
  image: wordpress:latest
  ports:
   32701:80
  environment:
   WORDPRESS_DB_HOST: db:3306
   WORDPRESS_DB_PASSWORD: rootpassword
   WORDPRESS_DB_NAME: wp01
  restart: always
  depends_on:
   - db
  volumes:
   ./app/wp01/html:/var/www/html

少しだけ解説するとポイントはdbの中でDatabaseを指定せずにwp01の中で指定することと、rootでアクセスさせることです。Create Databese権限のあるユーザーを指定することで、初期スクリプトの作成なしに、DBを自動で作成することができます。Wordpressのコンテナを増やしたい場合は、wp02 を作成することで簡単にサービスを増やすことができます。また、dbの中で指定しているcommandはメモリ消費量を抑えるための設定です。パフォーマンスは後回しにします。dockerの設定は以上です。あとは以下のコマンドで立ち上げることが出来ます。docker ps でSTATUSを確認したら、Wordpressの設定に移りましょう。

$docker-compose up -d
$docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8fb30e64aaaa wordpress:latest "docker-entrypoint.s…" 2 days ago Up 34 hours 0.0.0.0:32701->80/tcp docker_wp01_1
b4109ef2aaaa mysql:5.7 "docker-entrypoint.s…" 2 days ago Up 34 hours 0.0.0.0:3306->3306/tcp, 33060/tcp docker_db_1
a2bbb4e4aaaa nginx "nginx -g 'daemon of…" 2 days ago Up 9 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp docker_lb_1
投稿を作成しました 95

コメントを残す

関連する投稿

検索語を上に入力し、 Enter キーを押して検索します。キャンセルするには ESC を押してください。

トップに戻る
%d人のブロガーが「いいね」をつけました。