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 等级

相关问题

gika815 picture gika815  ·  3评论

rebby123 picture rebby123  ·  3评论

JordanSimba picture JordanSimba  ·  4评论

miskolc picture miskolc  ·  3评论

bheuju picture bheuju  ·  4评论