如何在Docker容器中的Tomcat上启用HTTPS?

时间:2019-01-23 13:57:50

标签: docker ssl tomcat https

我是Tomcat和Docker的新手,并且在尝试在我的网站上启用https时陷入困境。首先在服务器上,而不在任何容器中:

a)我生成了一个CSR

b)获得了商业SSL证书

c)将证书放在服务器/ etc / docker / certs上的文件夹中

d)然后使用以下配置创建我的Docker容器

我可以使用命令docker exec -it <container-id> sh浏览我的容器。我可以编辑server.xmlweb.xml,但我知道,如果我希望https配置能够保留在各个容器之后,则应该在容器外部的操作系统级别安装证书。换句话说,我应该能够删除一个容器并创建另一个容器,而无需重新安装ssl。

我该怎么做?有任何想法吗?。提前致谢!以下是我的配置:

1。数据库

docker run -d --name=example-db --restart=always --net=example-net --mount type=volume,src=mydbdata,target=/example-db --hostname=example-db -e POSTGRES_DB=mydb -e POSTGRES_USER=myuser -e POSTGRES_PASSWORD=secret myapp/db

2。应用程序

docker run -d --name=example-app --restart=always --mount type=volume,src=mydata,target=/example-app -p 80:8080 --net=example-net -e DB_HOST=example-db -e DB_NAME=mydb -e DB_USER=myuser -e DB_PASSWORD=secret myapp/myapp

再次感谢您的帮助。 艺术

1 个答案:

答案 0 :(得分:0)

您可以在docker run时使用bind mounts将外部证书映射到一个容器中。假设您的证书位于主机上的/etc/docker/certs中,并且您希望它们位于容器中的/etc/ssl/certs中,然后添加以下任意一项:

-v /etc/docker/certs:/etc/ssl/certs:ro

--mount type=bind,src=/etc/docker/certs,dst=/etc/ssl/certs,readonly

在这种情况下,您的Tomcat配置将使用/etc/ssl/certs作为其路径。