You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:16:03