Java 运行在docker上的https spring应用程序

Java 运行在docker上的https spring应用程序,java,docker,spring-boot,ssl,https,Java,Docker,Spring Boot,Ssl,Https,我最近几天的问题是,我正试图加密我正在进行的一些项目。 因为Docker对我来说是一个很好的解决方案(如果它在本地运行,它将远程运行),据我所知,我有3层可以实现我的ssl证书。 第一层是实例或VM(在我的例子中是本地的),aws或google。第二层是Docker守护进程(充当运行的所有容器的服务器或管理器),最后一层是spring boot应用程序或运行在jdk alpine环境(可能是tomcat服务器)上的服务 要加密应用程序并通过我的inteliJ运行,一切顺利,我获得了一个安全的应用

我最近几天的问题是,我正试图加密我正在进行的一些项目。 因为Docker对我来说是一个很好的解决方案(如果它在本地运行,它将远程运行),据我所知,我有3层可以实现我的ssl证书。 第一层是实例或VM(在我的例子中是本地的),aws或google。第二层是Docker守护进程(充当运行的所有容器的服务器或管理器),最后一层是spring boot应用程序或运行在jdk alpine环境(可能是tomcat服务器)上的服务

要加密应用程序并通过我的inteliJ运行,一切顺利,我获得了一个安全的应用程序连接。一旦我构建了包含jar应用程序的docker文件并使用以下行运行它:

docker run-p 443:8443 myImage

我收到错误消息:

配置为在端口8443上侦听的Tomcat连接器无法启动。端口可能已在使用中,或者连接器可能配置错误

无论我在spring boot application.properties中定义了什么端口

#HTTPS
server.port: 8443
server.ssl.key-store: https-key.jks
server.ssl.key-store-password: password
server.ssl.keyStoreType: JKS
server.ssl.keyAlias: https-key
我得到的消息是,端口已被使用,这意味着我缺少了一些东西


任何帮助/指南,以实现一个https://连接到一个运行在Docker上的spring boot应用程序,都将是我工作的一大亮点,我将非常感激

我以前用SSL配置过Spring Boot。它起作用了,但是我发现一个更灵活、文档更完善、速度更快的解决方案(也是从性能角度来看)是添加
nginx

Nginx可以充当反向代理,因此当用户请求
example.com:443
SSL时,它将被
Nginx
终止,并转发到您的Spring Boot应用程序,该应用程序在
8080
上进行监听,而不暴露于外界。e、 g

server {
   listen 443 ssl;
   server_name example.com;
   ssl_certificate /path/to/cert;
   ssl_certificate_key /path/to/key;

location / {
    proxy_pass http://spring_boot_application;
}

upstream spring_boot_application {
    server spring_boot_application:8080;
}

有人做了同样的事情,都使用了
docker

我尝试了教程,遇到了一些问题,但解决了,除了现在我能看到的只是Nginx html索引文件,而不是我的实际应用程序。。。但这让我现在明白多了。。需要进一步了解如何配置Nginx容器并使其正确。tnx:)@ndrzhr感谢是通过投票或接受答案给出的。此时,本教程已被作者删除。