Doccano: 質問:Dockerコンテナ内にあるdoccanoアプリをSSL対応にするにはどうすればよいですか?

作成日 2019年08月28日  ·  3コメント  ·  ソース: doccano/doccano

ばかげた質問があり、申し訳ありませんが、Dockerコンテナ内に設定されたdoccanoアプリをSSL対応にするにはどうすればよいですか?

このようにアプリを実行すると:

docker run -d --rm --name doccano \
  -e "ADMIN_USERNAME=admin" \
  -e "[email protected]" \
  -e "ADMIN_PASSWORD=password" \
  -e "DEBUG=False" \
  -e "SECRET_KEY=secret-key" \
  -p 80:8000 doccano:myrebuilt

そして私はsudo netstat -tplnをします私はこれを手に入れます:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp6       0      0 :::80                   :::*                    LISTEN      32697/docker:proxy

Webブラウザにhttp://mydoccano:80/と入力すると、Docannoアプリが表示されます。 残念ながら、これは安全ではありません。

そこで、ホストマシンでnginxを設定し、80から443にリダイレクトすることを考えましたが、Dockerイメージを実行しようとすると次のエラーが発生します。

fc310303a5710e422580f1ffd5a0f1a30
docker: Error response from daemon: driver failed programming external connectivity on endpoint doccano (fa81ff4b030a29636bc22178e75b95a9d9988984325): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use.

http:/mydoccano/からhttps://mydocano/にリダイレクトするにはどうすればよいですか? Dockerコンテナ内にnginxを設定する必要がありますか? または、ssl証明書をコンテナー内に配置し、ある種のsslパラメーターを渡しながら実行する必要がありますか? 何かアイデアや指針はありますか? 前もって感謝します!

question

最も参考になるコメント

@cwの提案のおかげで、ついにdoccanoアプリをSSLで動作させることができました。

念のため、そして誰かが私がそれをどのように機能させたかを知りたいと思っている場合に備えて、本番サーバーでのNginx構成を以下に示します。

upstream doccano_app {
    server 127.0.0.1:8080;
}

server {
    listen 80;
    listen [::]:80;
    server_name doccano.mydomain.com;

    location / {
        return 301 https://$host$request_uri;
    }
}

server { 
    listen 443 ssl;
    listing [::]443 ssl;

    server_name doccano.mydomain.com;

    ssl_certificate /etc/letsencrypt/live/doccano.mydomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/doccano.mydomain.com/privkey.pem;

    root /var/www/html;

    try_files $uri @docker;

    location <strong i="7">@docker</strong> {
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header Host $http_host;
          proxy_set_header X-Forwarded_Proto $scheme;
          proxy_redirect off;
          proxy_pass http://doccano_app;
  }

}

全てのコメント3件

nginxを使用してSSLを終了してから、リクエストをdoccanoに転送することをお勧めします。 SSLの背後でdoccanoを使用する場合は、 https://github.com/chakki-works/doccano/pull/350に記載されている設定を構成する必要があることに注意して

ありがとう、@ cw

@cwの提案のおかげで、ついにdoccanoアプリをSSLで動作させることができました。

念のため、そして誰かが私がそれをどのように機能させたかを知りたいと思っている場合に備えて、本番サーバーでのNginx構成を以下に示します。

upstream doccano_app {
    server 127.0.0.1:8080;
}

server {
    listen 80;
    listen [::]:80;
    server_name doccano.mydomain.com;

    location / {
        return 301 https://$host$request_uri;
    }
}

server { 
    listen 443 ssl;
    listing [::]443 ssl;

    server_name doccano.mydomain.com;

    ssl_certificate /etc/letsencrypt/live/doccano.mydomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/doccano.mydomain.com/privkey.pem;

    root /var/www/html;

    try_files $uri @docker;

    location <strong i="7">@docker</strong> {
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header Host $http_host;
          proxy_set_header X-Forwarded_Proto $scheme;
          proxy_redirect off;
          proxy_pass http://doccano_app;
  }

}

このページは役に立ちましたか?
0 / 5 - 0 評価