我需要使用docker compose部署一个启用https的Jenkins容器,而不使用像Nginx这样的反向代理,如何实现这一点?
我已经阅读了这篇文章,这篇博客文章,这篇博客文章都要求我部署。带有java参数的war文件,如--httpPort
和--httpsPort
。
我应该将这些选项放在docker compose文件的何处?我还有一个Dockerfile,在那里我可以在安装后运行一些命令,可以把这些选项放在那里吗?
这是我当前的docker compose文件,它可以工作。注意:我没有尝试调整此文件中的http或https端口:
version: '3.7'
services:
jenkins:
#image: jenkins/jenkins:lts
build:
context: ./
dockerfile: jenkins.Dockerfile
privileged: true
user: root
expose:
- 8080
ports:
- 50000:50000
container_name: jenkins
volumes:
- ./jenkins_data:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
environment:
DOCKER_SOCKET: /var/run/docker.sock
privileged: true
networks:
- jenkins_nw
restart: unless-stopped
networks:
jenkins_nw:
driver: bridge
这是我的詹金斯。Dockerfile:
FROM jenkins/jenkins:lts
ENV http_proxy http://our.proxy.com:2222
ENV https_proxy http://our.proxy.com:2222
USER root
COPY ["./certs/ourrootchain.cer", "/var/jenkins_home"]
RUN \
cd /tmp \
&& keytool -keystore /opt/java/openjdk/lib/security/cacerts -storepass changeit -noprompt -trustcacerts -importcert -alias ourrootchain -file /var/jenkins_home/ourrootchain.cer
RUN apt-get update && apt-get install tcpdump procps net-tools -y
故障排除
java -Duser.home=/var/jenkins_home -Djenkins.model.Jenkins.slaveAgentPort=50000 -jar /usr/share/jenkins/jenkins.war
我认为我需要将pkcs12文件导入密钥库。我在线阅读的所有指南都说明我需要创建一个新的密钥库。是否可以将我的pkcs12导入现有密钥库?
是否有一个地方可以定义正在运行的java命令?
更新:
我不是java专家,所以我不知道“-D”用于虚拟机选项。我将“JAVA_选项”调整为如下所示:“-DhttpsPort=8443-DhttpsCertificate=/var/jenkins_certs/jenkins.crt-DhttpsPrivateKey=/var/jenkins_certs/jenkins.key。我还调整了Dockerfile以创建/var/jenkins_certs目录,并复制到实际的证书和私钥上。容器部署成功,使用ps-aux | grep java
我可以看到我的选项a你真的被利用了。但是netstat-tulpn
仍然显示只有“8080”处于打开状态。为什么Jenkins容器拒绝使用HTTPS或打开我配置的HTTPS端口?
我在github上找到了docker hub的图片jenkins ssl,我找到了他们是如何配置证书的,并添加了“jenkins_OPTS”语句来实际更改我需要的参数。我在Dockerfile中编辑了以下几行,以使用我的自定义证书使其最终生效!
#Commenting this out
#ENV JENKINS_OPTS --httpPort=-1 --httpsPort=8443 --httpsCertificate="$CERT_FOLDER/jenkins.pem" --httpsPrivateKey="$CERT_FOLDER/jenkins.key"
#Copy over custom certs change permissions to jenkins:jenkins
COPY ["./certs/", "/var/jenkins_certs"]
RUN chown -R jenkins:jenkins "/var/jenkins_certs"
#Update root ca with custom trust chain (For web only)
RUN cp /var/jenkins_certs/attrootchain.cer /usr/local/share/ca-certificates && update-ca-certificates
#Update root ca with custom trust chain (for java env)
RUN keytool -keystore /opt/java/openjdk/lib/security/cacerts -storepass changeit -noprompt -trustcacerts -importcert -alias ourrootchain -file /var/jenkins_certs/ourrootchain.cer
#run Jenkins options using the custom cert and key
ENV JENKINS_OPTS --httpPort=-1 --httpsPort=8443 --httpsCertificate="/var/jenkins_certs/jenkins.crt" --httpsPrivateKey="/var/jenkins_certs/jenkins.key"
然后运行docker build-t jenkins ssl/
现在,我可以在我的docker-comment文件中使用此图像。或者像这样作为简单的docker run语句运行:
docker run——名称jenkins ssl-p 443:8443-p 50000:50000 jenkins ssl
问题内容: Docker新手在这里。 我已经设置了docker容器来运行一个简单的Node JS应用程序。 假设我有一个新版本的应用程序(例如 1.1 ),必须由Jenkins CI进行部署。在这里,我对Jenkins CI到底应该做什么应该有所了解: 应该关闭并删除旧容器( 1.0 )并启动新实例 1.1 吗? 要么 应该进入当前运行的容器并仅更新代码吗? 问题答案: 使用CI / CD工具(如
问题内容: 我正在将Jenkins声明性管道与Docker代理一起使用来构建和测试我的软件,包括使用testcontainer运行集成测试。我可以在开发环境中(不使用Jenkins)运行我的testcontainers测试,但是在Jenkins下它们失败。 testcontainers Ryuk资源获取守护程序不起作用 我可以通过将环境变量设置为来禁用守护进程来解决该问题。但是,某些集成测试仍然反
问题内容: 我面临以下问题:我创建了一个Jenkins Docker容器,并将主机上的Docker套接字与该容器链接。像这样: 然后,当我尝试在詹金斯上创建一些作业时,我收到通常的“权限被拒绝”消息: 尝试在unix:///var/run/docker.sock上连接到Docker守护程序套接字时获得的权限被拒绝:获取 http://%2Fvar%2Frun%2Fdocker.sock/v1.29
我正在使用Docker Agents的Jenkins声明式管道来构建和测试我的软件,包括使用测试容器运行集成测试。我可以在我的开发环境中运行测试容器测试(不使用Jenkins),但它们在Jenkins下会失败。 testcontainers Ryuk资源获取守护程序不工作 我可以通过将环境变量设置为true来禁用守护进程来解决这个问题。但是,一些集成测试仍然一再失败。 使用Elasticsearc
我正在尝试通过< code>apiserver proxy连接到< code > sky DNS < code > etcd 服务器,使用此文档http://kubernetes . io/docs/user-guide/access-the-cluster/# manually-constructing-API server-proxy-URLs命令 curl--cacert /etc/kube
我刚刚完成了第一次Docker部署,当我运行这个命令查看最近进程的状态时... 我得到这个输出