【问题标题】:Setting up Rundeck within a Docker container + reverse proxy in my NGINX在我的 NGINX 中的 Docker 容器 + 反向代理中设置 Rundeck
【发布时间】:2021-02-01 17:25:24
【问题描述】:

我对 docker 和 nginx 反向代理方法有点陌生,所以我在理解我的限制或为使这成为可能而应该采取的步骤时遇到了一些麻烦。下面我将列出我正在使用的设置以及我希望产品的外观。

_

设置:

  • 虚拟机:Ubuntu 16.04.7 LTS
  • nginx/1.10.3
  • 码头工人 20.10.2
  • rundeck 图片(从here下载)*

_

Nginx default.conf 文件

server {
listen 80;
server_name vmHostname;
return 301 https://vmHostname$request_uri;
}

server {
listen 443 ssl;
server_name vmHostname;
ssl_certificate /etc/nginx/conf.d/vmHostname.domain.corp.cert;
ssl_certificate_key /etc/nginx/conf.d/vmHostname.domain.corp.key;
return 301 https://vmHostname.domain.corp$request_uri;
}

# Main webserver route configuration
server {
listen 443 ssl;
server_name vmHostname.domain.corp;
ssl_certificate /etc/nginx/conf.d/vmHostname.domain.corp.cert;
ssl_certificate_key /etc/nginx/conf.d/vmHostname.domain.corp.key;
#===========================================================================#

# Me trying to host a flask app and failing
location /example-app/ {
    rewrite ^/example-app(.*) /$1 break;
    proxy_pass http://example-app:5000;
    proxy_set_header    Host                $host/example-app;
    proxy_set_header    X-Real-IP           $remote_addr;
    proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
    proxy_set_header    X-Forwarded-Proto   $scheme;
}


# Me trying to route rundeck and failing 
location /rundeck/ {
    rewrite ^/rundeck(.*) /$1 break;
    proxy_pass http://rundeck:4440;
    proxy_set_header    Host                $host/rundeck;
    proxy_set_header    X-Real-IP           $remote_addr;
    proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
    proxy_set_header    X-Forwarded-Proto   $scheme;
    auth_request /auth/;
        }
}

_

我的 Docker 映像

User@vmHostname:/etc/nginx/sites-enabled$ docker images
REPOSITORY                                              TAG                IMAGE ID       CREATED         SIZE
appsession_example-app                                  latest             b2afe846d7f5   3 days ago      914MB
nginx                                                   latest             f6d0b4767a6c   2 weeks ago     133MB
jacekkow/rundeck                                        latest             d0023aa3b7a9   10 months ago   701MB
hello-world                                             latest             bf756fb1ae65   13 months ago   13.3kB
python                                                  3.7.4-alpine3.10   f309434dea3a   15 months ago   98.7MB

_

我的 Docker 容器

User@vmHostname:/etc/nginx/sites-enabled$ docker ps
CONTAINER ID   IMAGE              COMMAND                  CREATED      STATUS      PORTS                    NAMES
d79261bc568d   nginx:latest       "/docker-entrypoint.…"   2 days ago   Up 2 days   80/tcp                   funny_beaver
669e057b2500   jacekkow/rundeck   "/bin/sh -c /run.sh"     2 days ago   Up 2 days   0.0.0.0:4440->4440/tcp   rundeck

_

我想要/需要什么:

  • 我想设置一个此 vm 用于托管烧瓶应用程序并同时运行 rundeck 的设置。根据我目前的理解(可能是错误的),我必须下载 rundeck 的图像,将其移动到容器中,进入我的 rundeck 配置文件并设置反向代理,viola!?

现在,当我访问 vmHostname.domain.corp:4440 时,我的 rundeck 已“启动”,但我无法通过登录页面。我不完全确定从这里去哪里。另外,我意识到我只是在我的反向代理中编写 rundeck,但还没有设置 nginx 将如何与 docker 通信以启用路由。

抱歉,这篇文章太长了……只是想确保我提供了所有信息……绝望的小声帮助,哈哈

【问题讨论】:

    标签: docker ubuntu nginx containers rundeck


    【解决方案1】:

    您需要在 Rundeck rundeck-config.properties 上将 grails.serverURL 文件设置为 Rundeck 的 NGINX“输出”,在 official image 上您可以使用 RUNDECK_GRAILS_URL env var 进行设置。

    NGINX 配置:

    server {
        listen 80 default_server;
        server_name rundeck-cl;
    
        location / {
            proxy_pass http://rundeck:4440;
         }
    }
    

    这是一个完整的“dockerized”示例,它在“config”目录中使用上面的 NINGX 配置,检查 docker-compose 定义的第 17 行:

    version: "3.7"
    services:
      rundeck:
        build:
          context: .
          args:
            IMAGE: ${RUNDECK_IMAGE:-rundeck/rundeck:3.3.8}
        container_name: rundeck-nginx
        ports:
        - 4440:4440
        environment:
          RUNDECK_GRAILS_URL: http://localhost
          RUNDECK_SERVER_FORWARDED: "true"
      nginx:
        image: nginx:alpine
        volumes:
          - ./config/nginx.conf:/etc/nginx/conf.d/default.conf:ro
        ports:
        - 80:80
    

    【讨论】:

    • 嘿!感谢您的答复。我没有下载官方图像,因为无论我尝试下载什么版本,我都会收到“收到意外的 HTTP 状态:503 服务不可用” 我下载的 github rundeck 图像令人惊讶地是我能够下载的唯一图像类型.有没有办法用当前的 rundeck 图像做到这一点?另外,当您说更改 rundeck-config.properties 时,您的意思是 ssh 进入 rundeck 映像的容器并输入:grails.serverURL: vmHostname.Domain.corp:4440(示例)?
    • 嗨!不是,它是rundeck-config.properties文件的参数,看看这个:docs.rundeck.com/docs/administration/configuration/database/…使用rundeck官方镜像你可以使用一些env vars来配置它,看看这个:docs.rundeck.com/docs/administration/configuration/…
    • 当然,这看起来类似于使用 rundeck 的正常设置。我没有 nginx 的 yml 文件,所以我假设您之前粘贴的 docker-compose 是基于 rundeck 文件的?抱歉,如果我的回答如此幼稚,那么在 docker 容器和 compose 进入我的生活之前,我的生活是可以理解的。
    • 嘿,你认为这个可行吗? hub.docker.com/r/jordan/rundeck 看来我可以设置环境变量和外部 url
    • 看起来不错,但我更喜欢官方图片:P
    猜你喜欢
    • 2018-03-20
    • 2021-05-04
    • 2021-09-30
    • 1970-01-01
    • 2017-03-21
    • 2023-04-05
    • 1970-01-01
    • 2019-04-30
    • 2020-01-19
    相关资源
    最近更新 更多