Docker容器中Bamboo Server配置HTTPS自签名证书报错求助
Docker部署Bamboo Server配置HTTPS完整指南(含权限问题解决)
当前权限报错的快速解决
你遇到的/root/.keystore (Permission denied)是因为Atlassian的Bamboo容器默认用**非root用户(UID=2001,用户名bamboo)**运行,容器内/root目录对该用户无访问权限。解决方法:
- 不要把keystore挂载到容器的
/root目录,换成Bamboo有权限访问的路径,比如/var/atlassian/application-data/bamboo/ssl/ - 宿主机上修改keystore文件权限,让容器内的bamboo用户能读取:
chown 2001:2001 /path/to/your/local/.keystore - 启动命令中更新
ATL_TOMCAT_KEYSTORE_FILE为新路径,比如/var/atlassian/application-data/bamboo/ssl/.keystore
方案一:直接在Bamboo容器内配置HTTPS(自签名证书)
步骤1:生成符合Tomcat要求的Keystore文件
如果是用openssl生成的pem格式证书,需要转换成JKS格式:
# 1. 将证书和私钥合并为PKCS12格式 openssl pkcs12 -export -in cert.pem -inkey key.pem -out bamboo.p12 -name bamboo -password pass:changeit # 2. 转换为JKS keystore keytool -importkeystore -deststorepass changeit -destkeypass changeit -destkeystore bamboo.jks -srckeystore bamboo.p12 -srcstoretype PKCS12 -srcstorepass changeit -alias bamboo
如果直接用keytool生成JKS证书:
keytool -genkey -alias bamboo -keyalg RSA -keysize 4096 -storetype JKS -keystore bamboo.jks -validity 365 -storepass changeit -keypass changeit
步骤2:准备挂载目录并设置权限
# 宿主机创建证书存放目录 mkdir -p /opt/bamboo-ssl # 把生成的bamboo.jks移到该目录 mv bamboo.jks /opt/bamboo-ssl/ # 设置权限,匹配容器内bamboo用户的UID chown -R 2001:2001 /opt/bamboo-ssl/
步骤3:启动Bamboo容器(修正参数)
docker run -d \ -v bambooVolumeLatest:/var/atlassian/application-data/bamboo \ -v /opt/bamboo-ssl:/var/atlassian/application-data/bamboo/ssl \ -p 54663:54663 \ -p 8443:8443 \ -e JVM_MINIMUM_MEMORY=3g \ -e JVM_MAXIMUM_MEMORY=3g \ -e ATL_TOMCAT_SCHEME=https \ -e ATL_TOMCAT_SECURE=true \ -e ATL_TOMCAT_SSL_ENABLED=true \ -e ATL_TOMCAT_SSL_PROTOCOL=TLS \ -e ATL_TOMCAT_KEYSTORE_FILE=/var/atlassian/application-data/bamboo/ssl/bamboo.jks \ -e ATL_TOMCAT_KEYSTORE_PASS=changeit \ --name bamboo-server \ atlassian/bamboo-server:latest
步骤4:验证配置
访问https://localhost:8443,浏览器会提示证书不安全,手动添加信任后即可正常使用Bamboo。
方案二:使用Nginx反向代理配置HTTPS(更易维护)
步骤1:生成自签名证书
mkdir -p /opt/nginx-ssl openssl req -x509 -newkey rsa:4096 -keyout /opt/nginx-ssl/bamboo.key -out /opt/nginx-ssl/bamboo.crt -sha256 -days 365 -nodes
步骤2:创建Nginx配置文件
创建/opt/nginx-conf/bamboo.conf:
server { listen 443 ssl; server_name localhost; # 替换为你的域名或服务器IP ssl_certificate /etc/nginx/ssl/bamboo.crt; ssl_certificate_key /etc/nginx/ssl/bamboo.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; location / { proxy_pass http://bamboo-server:8085; proxy_set_header Host $host; 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; proxy_set_header X-Forwarded-Port $server_port; } } # 可选:自动将HTTP请求重定向到HTTPS server { listen 80; server_name localhost; return 301 https://$host$request_uri; }
步骤3:启动容器(配置Docker网络)
# 创建专用网络,让Nginx和Bamboo互通 docker network create bamboo-network # 重启Bamboo加入网络 docker stop bamboo-server && docker rm bamboo-server docker run -d \ -v bambooVolumeLatest:/var/atlassian/application-data/bamboo \ -p 54663:54663 \ -e JVM_MINIMUM_MEMORY=3g \ -e JVM_MAXIMUM_MEMORY=3g \ --name bamboo-server \ --network bamboo-network \ atlassian/bamboo-server:latest # 启动Nginx容器 docker run -d \ -v /opt/nginx-conf/bamboo.conf:/etc/nginx/conf.d/bamboo.conf \ -v /opt/nginx-ssl:/etc/nginx/ssl \ -p 80:80 \ -p 443:443 \ --name bamboo-nginx \ --network bamboo-network \ nginx:latest
步骤4:验证配置
访问https://localhost,信任自签名证书后即可访问Bamboo,HTTP请求会自动跳转到HTTPS。
内容的提问来源于stack exchange,提问作者Manu Mishra
相关产品推荐
相关产品推荐

