logo

docker-composeで簡易リバプロ環境構築【備忘録】

投稿日2021-02-26

更新日2024-05-17

Picture of the logo

タグ一覧

目次(タップして移動)

はじめに

使い捨てのwebサーバーが必要になる事がたまにあるので個人的備忘録として、docker-composeの初期設定を残しておく。

ここで書くこと

  • リバースプロキシ設定

  • https設定

  • www有無でのリダイレクト

docker-compose.yml抜粋

version: '3'

services:
    # ここからnginx-proxy
  proxy:
    image: jwilder/nginx-proxy:alpine
    container_name: jwilder
    
    privileged: true
    tty: true
    
    ports:
      - "80:80"
      - "443:443"
    restart: always
    
    volumes:
      - cert:/etc/nginx/certs:ro
      - vhost:/etc/nginx/vhost.d
      - html:/usr/share/nginx/html
      
      - /var/run/docker.sock:/tmp/docker.sock:ro
    labels:
      com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: "true"
    
    # ここからletsencrypt
  letsencrypt-proxy:
    image: jrcs/letsencrypt-nginx-proxy-companion
    container_name: letsencrypt
    
    privileged: true
    tty: true

    volumes:
      
      - cert:/etc/nginx/certs:rw
      - vhost:/etc/nginx/vhost.d
      - html:/usr/share/nginx/html

      - /var/run/docker.sock:/var/run/docker.sock:ro
    depends_on:
      - proxy

    #webアプリコンテナ
  app:
    
    ... 

    volumes: 
      
      # letsencryptのため
      - html:/usr/share/nginx/challenge
      - ./web/html:/usr/share/nginx/html

    environment:
      VIRTUAL_HOST: hoge.com,www.hoge.com
      LETSENCRYPT_HOST: hoge.com,www.hoge.com
      LETSENCRYPT_EMAIL: hoge@gmail.com

    restart: always

    depends_on: 
      - letsencrypt-proxy


    #letsencryptのために必要
volumes:
  cert:
  html:

VIRTUAL_HOSTとLETSENCRYPT_HOSTには,区切りで2つのURLを併記する。この設定でブラウザにどのurlを入力しても、全てhttps://hoge.comにリダイレクトされる。

https://hoge.com https://www.hoge.com http://hoge.com http://www.hoge.com

  • privilegedとttyは無くても動くかもしれないけど念のため。
  • DNSのサブドメイン設定は先にしておく必要がある。
  • ホスト側のファイアウォールで80と443を開けておく必要がある。





このサイトをシェアする