当前位置: 首页 > 知识库问答 >
问题:

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

仲孙超
2023-03-14

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

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

docker运行-p 443:8443 myImage

我会收到错误消息:

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

无论我在spring boot应用程序中定义了什么端口。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应用程序的帮助/指南都将是对我工作的一个极大的嘘声,我将非常感激!

共有1个答案

柳胜
2023-03-14

我在过去用SSL配置过spring boot。它起作用了,但是我发现一个更灵活、文档化更好、速度更快的解决方案(从性能角度来看也是如此)是添加nginx

Nginx可以充当反向代理,这样当用户请求example.com:443SSL时,就会被Nginx终止,并转发给您的spring boot应用程序,该应用程序监听不对外公开的8080。例如。

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;
}

有一个stackoverflow帖子来自做相同事情的人,两者都使用Docker

 类似资料:
  • 问题内容: 我正在尝试运行此项目-https://github.com/JumboInteractiveLimited/codetest 我已经下载了Docker工具箱,并执行了GitHub页面上提到的build和run命令,但是当我尝试访问http:localhost:8080时,该页面仍然不可用。 当我尝试再次执行运行时,Docker说 编辑 :澄清一下,我只有在第二次运行时才收到该错误。当我

  • 我正在尝试使用Windows中的docker工具箱运行自定义java swing GUI。我现在想要容器化这个应用程序,但是得到以下错误: 我正在运行一个DockerFile。设置为: 3)复制到包含JAR的文件夹上 4)运行docker容器,该容器将启动GUI(不是linux前端,最好不使用vnc)。 我将Xlaunch用于windows上的终端,并且能够使用它在docker上启动一个firef

  • 我有一个akka-http应用程序,在本地工作得很好,我有一些问题“dockerizing”应用程序。我通过Dockerfile构建docker映像,并使用docker-entrypoint执行java-jar命令。当我第一次访问正在运行的docker容器时,应用程序并没有运行,但是如果我访问容器并手动执行java-jar命令,应用程序就会启动良好。如果我执行以下命令(在容器内),应用程序也会正常

  • 我意识到这个问题(Windows容器可以托管在Linux上吗?),但它并没有真正回答我的问题。 我是Docker的新手,但我的问题是这样的--如果我把任何windows应用程序放在Docker容器中,它现在能在Linux上运行吗?反之亦然? Confluent声称它只能在linux上运行,但我的同事使用Docker在Windows上安装了它。所以如果你能用Docker安装它,那么整个应用程序肯定会

  • 我有一个Play 2 Web应用程序,我使用Docker将其部署到弹性豆茎。在这个Web应用程序中,我启动了一个Akka集群。启动过程包括将自动缩放组中的所有节点添加为种子节点(包括其本身)。在第一次部署到EB时,我指定部署到VPC(我只选择一个可用性区域)。 当我运行应用程序并启动群集时,我收到以下消息: 关联错误[akka.tcp://cluster@localhost: 2551]- 其中1

  • Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。 Hello world 现在让我们来试试 $ sudo docker run ubuntu:14.04 /bin/echo 'Hello world' Hello world 刚才你启动了你的第一个容器! 那么刚才发生了什么? 我们逐步来分析 docker run 命令做了哪些事情。 首先,