10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

HTTPSなWordPressをDocker + Let's Encryptで速攻デプロイ

Posted at

初投稿です。
今さら需要があるのかは謎ですが、docker-compose一発でHTTPSなWordPressを立ち上げたいと思ったら自分の環境でベストっぽいのが見当たらなかったので書いてみました。
docker初心者なので問題あれば指摘いただけると幸いです。

ざっくり説明

WordPressの前にリバースプロキシ(nginx-proxy)を置いてSSL化。
Virtual Hostで切ってやればホスト名でアクセス先を制御できるので、複数のサービスをぶら下げることもできる。
letsencrypt-nginx-proxy-companionはLet's Encryptの証明書を取得してくれて、しかも1時間に1回自動で確認して必要であれば更新してくれる。
神イメージたちに感謝。

前提

  • 80/443 portにインターネット側からアクセス可能。(Let's Encryptでhttp-01チャレンジが必要なので80も必須)
  • 使うドメインが動かす環境に名前解決ができる状態になっている
  • docker/docker-composeが使える

実行例

###サンプルファイル

DBのパスワードとかドメイン名とかは自分の環境に応じてお好きにどうぞ。
基本これで動くはず。/home/webは作らないとだめかも。
ファイル永続化の場所が気に入らないなら変えてどうぞ。

docker-compose.yml
version: '2'
services:
  db:
    image: mysql:5.7
    restart: always
    volumes:
      - /home/web/db:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: #######
      MYSQL_DATABASE: #######
      MYSQL_USER: #######
      MYSQL_PASSWORD: #######

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    restart: always
    volumes:
      - /home/web/wordpress:/var/www/html
    links:
      - db
    expose:
      - 80
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: #######
      WORDPRESS_DB_PASSWORD: #######
      VIRTUAL_HOST: test1.example.com
      LETSENCRYPT_HOST: test1.example.com
      LETSENCRYPT_EMAIL: test1@example.com

  nginx-proxy:
    image: jwilder/nginx-proxy:latest
    restart: always
    ports:
      - 80:80
      - 443:443
    volumes:
      - /home/web/certs:/etc/nginx/certs:ro
      - /home/web/wordpress/htpasswd:/etc/nginx/htpasswd
      - /etc/nginx/vhost.d
      - /usr/share/nginx/html
      - /var/run/docker.sock:/tmp/docker.sock:ro

  letsencrypt:
    image: jrcs/letsencrypt-nginx-proxy-companion:latest
    restart: always
    volumes:
      - /home/web/certs:/etc/nginx/certs:rw
      - /var/run/docker.sock:/var/run/docker.sock:ro
    volumes_from:
      - nginx-proxy

###起動

docker-compose up -d

#その他Tips

###他のOSSやMyAppをぶら下げたい
wordpress:の項目と同じように書いて

  • VIRTUAL_HOST
  • LETSENCRYPT_HOST

を書き換えればOK。

###docker-compose.ymlのファイルを分けたい
プロキシとアプリでdocer-compose.ymlファイルを分けたい場合などは、ネットワークを共有する必要があるので
取りあえずネットワーク名(今回はshare)を指定して作成。

docker network create --driver bridge share

各ファイル最下あたりに↓を記述してネットワーク指定してやればOK。

docker-compose.yml
networks:
  default:
    external:
      name: share

###ドメインも固定IPもないんだが?

無料ドメイン+DDNSでいいと思うよ。

###docker楽しい

ほんまにね。

10
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?