ディレクトリを作る

mkdir myapp
cd myapp

networkを作る

docker network create my-existing-network

docker-compose.ymlファイルを作る

version: '2'
services:
  db:
    image: mysql:5.7
    volumes:
      - ./db:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: wordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    volumes:
      - ./wp-content:/var/www/html/wp-content
    ports:
      - 80
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_PASSWORD: wordpress
      VIRTUAL_HOST: example.com
      LETSENCRYPT_HOST: example.com
      LETSENCRYPT_EMAIL: email@example.com
  nginx-proxy:
    image: jwilder/nginx-proxy
    restart: always
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./certs:/etc/nginx/certs:ro
      - /etc/nginx/vhost.d
      - /usr/share/nginx/html
      - /var/run/docker.sock:/tmp/docker.sock:ro
  letsencrypt:
    # image: jrcs/letsencrypt-nginx-proxy-companion
    image: alastaircoote/docker-letsencrypt-nginx-proxy-companion
    restart: always
    volumes:
      - ./certs:/etc/nginx/certs:rw
      - /var/run/docker.sock:/var/run/docker.sock:ro
    volumes_from:
      - nginx-proxy
networks:
  default:
    external:
      name: my-existing-network

現時点で(2016年12月25日)jrcs/letsencrypt-nginx-proxy-companionを使うと、DeserializationError: Deserialization error: Wrong directory fieldsというエラーが出るので、最新のletsencrypt apiに対応してないみたいです。その代わりにalastaircoote/docker-letsencrypt-nginx-proxy-companionwを使います。

appを起動

docker-compose up -d

参考:https://libertyseeds.ca/2016/09/20/Nginx-Let-s-Encrypt-and-Docker-Compose/