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

Docker中的Spring靴

戈华茂
2023-03-14

我正在学习如何使用Docker与一个Spring Boot应用程序。我遇到了一个小障碍,我希望有人能看到这个问题。我的应用程序严重依赖于环境特定属性文件中设置的@value。在我的/src/main/resources中,我有三个属性文件

  • 应用程序.属性
  • 应用程序-local.properties
  • 应用程序-prod.properties

我通常用:java-jar-dspring.profiles.active=local build/libs/finance-0.0.1-snapshot.jar启动我的应用程序

读取“application-local.properties”并正常运行。但是,我使用的是src/main/docker/dockerfile:

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD finance-0.0.1-SNAPSHOT.jar finance.jar
RUN sh -c 'touch /finance.jar'
EXPOSE 8081
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /finance.jar" ]

然后我开始说:

但是,该值在*.local和*.prop属性文件中都存在。

spring.datasource.driverClassName=org.postgresql.Driver

我需要做什么特别的事情才能拿起来吗?

更新:

共有1个答案

袁华清
2023-03-14

您可以使用Spring配置文件来使用docker run。使用Spring配置文件运行新创建的Docker映像就像将环境变量传递给Docker run命令一样简单

$ docker run -e "SPRING_PROFILES_ACTIVE=prod" -p 8080:8080 -t springio/gs-spring-boot-docker

还可以在Docker容器中调试应用程序。要调试应用程序,可以使用JPDA传输。因此我们将把容器当作远程服务器来处理。要启用此特性,在容器运行期间,在JAVA_OPTS变量中传递java代理设置,并将代理的端口映射到localhost。

$ docker run -e "JAVA_OPTS=-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=n" -p 8080:8080 -p 5005:5005 -t springio/gs-spring-boot-docker

资源链接:Spring Boot with Docker

docker run -d -p 8080:8080 -e \"SPRING_PROFILES_ACTIVE=nightly\" --name nightly-planets-server planets/server:nightly
docker run -d -p 8081:8080 -e \"SPRING_PROFILES_ACTIVE=dev\" --name dev-planets-server planets/server:latest

这可以从配置项系统自动完成。dev服务器包含最新版本,并且将每天部署一次...

 类似资料:
  • 在引导类中,该文件用于将虚拟数据导入数据库。 私人乐趣getDummyData():List{var FileReader:BufferedReader?=null } Jar包含,但当应用程序运行时,抛出的错误为 我错过了什么?

  • 我必须将我的Spring客户端与Elasticsearch连接,Elasticsearch的图像已由Elastic在Docker Hub中的官方ES 2.4.6图像拍摄,但当我尝试运行容器时,Docker控制台向我报告以下错误: [Glitch]无法连接到节点[{{transport}-1}{localhost}{127.0.0.1:9300}],已从节点列表中删除 应用程序。我的Spring项目

  • 我对Java和Spring很陌生。我正在寻找一个容器化的解决方案,它可以监视文件夹,重新构建项目,并利用Spring devols热交换重新加载更改的类。 我进行了搜索,但我一直在寻找生产就绪容器,构建和运行的步骤是分开的。我尝试使用两个不同的容器,一个带有Gradle的容器保持构建(),另一个容器执行构建结果: 它失败了,因为Java在容器中找不到依赖项(Spring、devtools、h2等)

  • Spring启动版本-2.1.13。BUILD-SNAPSHOT Java编译器版本-Jdk11 AWS EC2Java版本-jdk7 我开始从事一个微服务项目。因此,我的服务的docker映像是在Jdk11中编译的。当我尝试下载并运行容器时,它不会运行。现在在检查日志后,我看到了-java。lang.UnsupportedClassVersionError我正在使用maven构建。我应该在pom

  • 我们有应用程序,它将旋转短期(短期)docker容器。现在,它运行在Ubunut16.04服务器(VM)上,我们在同一台服务器上安装了docker和nodejs。我们有在同一台服务器上运行的nodejs应用程序,所以每当有请求传入时,nodejs应用程序都会启动docker容器并在docker容器内执行用户输入。一旦docker完成其工作,或者如果它用完了管理定义的资源,则docker容器将被强制

  • 大约对于独立的start as java进程: 大约需要20秒。但如果我在包含更多微服务的docker容器中运行它,则需要大约3分钟。有没有一种方法可以加快spring-boot的启动时间,例如,如果我启用debug longing,我注意到对于不同的spring配置有很多不必要的验证。如何使用Docker容器来加快仅用于开发目的的spring-boot启动时间?