docker - 从 VM 访问 dockerized 服务 (Rundeck)
问题描述
您好,我有一个 Ubuntu VM(使用桥接适配器),我在其中运行一个 docker 容器,在该容器中,我使用挂载的 Volume 中的预构建 war 文件启动 Rundeck。当我第一次运行 war 时,它会创建它的文件和配置文件:
#loglevel.default is the default log level for jobs:
ERROR,WARN,INFO,VERBOSE,DEBUG
loglevel.default=INFO
rdeck.base=/home/rundeck/rundeck
#rss.enabled if set to true enables RSS feeds that are public (non-authenticated)
rss.enabled=false
server.address=7d142a279564
grails.serverURL=http://7d142a279564:4440
dataSource.dbCreate = update
dataSource.url = jdbc:h2:file:/home/rundeck/rundeck/server/data/grailsdb;MVCC=true
# Pre Auth mode settings
rundeck.security.authorization.preauthenticated.enabled=false
rundeck.security.authorization.preauthenticated.attributeName=REMOTE_USER_GROUPS
rundeck.security.authorization.preauthenticated.delimiter=,
# Header from which to obtain user name
rundeck.security.authorization.preauthenticated.userNameHeader=X-Forwarded-Uuid
# Header from which to obtain list of roles
rundeck.security.authorization.preauthenticated.userRolesHeader=X-Forwarded-Roles
# Redirect to upstream logout url
rundeck.security.authorization.preauthenticated.redirectLogout=false
rundeck.security.authorization.preauthenticated.redirectUrl=/oauth2/sign_in
rundeck.log4j.config.file=/home/rundeck/rundeck/server/config/log4j.properties
如您所见,“server.address”和“grails.serverURL”将默认图像 ID 作为 IP。我无法使用此 url 访问容器,但我可以使用 localhost:4440 访问它。但是在登录 rundeck 后,它会将我重定向到“grails.serverURL”,如前所述,它给出“未找到服务器”。这就是我启动容器的方式:
sudo docker run -it -v /path/to/source:/path/to/dest -p 4440:4440 <imageID>
当我将“server.address”和“grails.serverURL”更改为 localhost 或 127.0.0.1 时,我根本无法访问容器。抱歉,如果在我刚开始 docker 之前已经回答了这个问题,并且已经在这里工作了几天,但找不到解决方案,谢谢!
解决方案
我不是 rundeck 方面的专家,但是查看文档rundeck 图像有两个用于设置 URL 和地址的环境变量RUNDECK_GRAILS_URL
和RUNDECK_SERVER_ADDRESS
docker run -d -e RUNDECK_GRAILS_URL=http://127.0.0.1:4440 -e RUNDECK_SERVER_ADDRESS=0.0.0.0 -p 4440:4440 rundeck/rundeck
.
现在您可以通过http://localhost:4440访问您的应用程序
如果您在远程服务器中运行 docker 容器,请更新您的RUNDECK_GRAILS_URL
as RUNDECK_GRAILS_URL=http://<remote_server_ip>:4440
.
现在您可以访问您的应用程序http://remote_server_ip:4440
推荐阅读
- regex - 用于验证特定正则表达式输入的正则表达式字符串
- node.js - 为我的移动应用程序选择最合适的平台来开发支持(数据访问服务层)
- c# - 如何更改richtextbox中选定文本的字体
- python - django 如何在查询集或序列化程序中自然地更改时间格式
- sql - Oracle 数据库 11gR2 快捷版
- spring-boot - 没有可用于服务的服务器:localhost
- c# - Assembly-CSharp.csproj 错误和 Intellisense 在 VSCode 中不起作用
- spring-boot - 使用 Spring Webflux 实现 trace-id
- c# - 获取调查 C# 中选择的用户数
- c# - ListView 在更新其屏幕后不保存更改