Tag: spring

Maven构build和dockerize Java Spring项目

我想自动化maven构build过程,并构build并运行docker容器(如果可能,使用docker-compose)并生成jar文件。 我怎么可能做一个maven命令呢?

弹簧系统参数被忽略

我创build了我的Dockerfile,在那里我想创build一个简单的Spring Boot Webapp监听端口。 FROM java:8 VOLUME /tmp ENV port=123 #WORKDIR /workdir ADD /target/docker-test-0.1.jar dockertest.jar EXPOSE $port RUN bash -c 'touch /dockertest.jar' #ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom -Dserver.port=$port","-jar","/dockertest.jar"] ENTRYPOINT java -jar /dockertest.jar -Djava.security.egd=file:/dev/./urandom -Dserver.port=$port 我的webapps application.properties定义了以下内容: server.port=666 通过IntelliJ Docker插件启动Docker容器我给它的参数: port=555 运行docker inspect bootapp (bootapp是容器名称)给我以下有关端口环境variables和入口点的信息: "Entrypoint" : [ "/bin/sh", "-c", "java -jar /dockertest.jar -Djava.security.egd=file:/dev/./urandom -Dserver.port=$port" ], "Env" : [ "port=555", […]

尤里卡客户不能够连接到同行服务(尤里卡客户)

我正在开发一个微服务应用程序使用春季,春季启动,尤里卡(服务发现)和function区。 我的应用程序由三个服务客户端,服务器和尤里卡服务器组成 客户端和服务器都使用尤里卡服务器进行注册,后来客户端使用尤里卡服务发现进行服务器调用。 我能够在本地运行应用程序,事情工作得很好。 但是,当部署在一些事情上会变得不合时宜。 步骤如下 同一安全组中的三个ec2实例。 每个微服务都作为docker集装箱正常运行,具有适当的端口。 一个ec2实例有弹性ip。 尤里卡服务器容器正在运行。 客户端和服务器容器部署在其他两个ec2实例上。 结果 使用ECS时 客户端和服务器能够向Eureka服务器注册。 Application AMIs Availability Zones Status HELLO-CLIENT n/a (1) (1) UP (1) – 3fcd1c92386d:hello-client:8071 HELLO-SERVER n/a (1) (1) UP (1) – 6a5d643b32e1:hello-server:8072 当遇到客户端端点java.net.UnknownHostException。 Whitelabel Error Page This application has no explicit mapping for /error,so you are seeing this as a fallback. Sun […]

在Docker容器中无法启动我的Eureka Spring REST服务

我的项目由在Eureka注册的REST服务组成,我也使用Zuul代理来pipe理请求,如图所示。 它以本地方式在我的电脑上完美运行,但是当我为我的服务创build一个docker容器时,它不会启动。 我遵循的步骤是: 我为每个服务创build了一个Docker容器:Eureka服务器,Zuul API网关,REST服务和我的Mysql数据库。 我从数据库中的存储过程中获取我的服务的数据,这个连接被testing并且工作。 我使用docker-compose启动所有实例,尤里卡和数据库实例保持运行,但REST服务实例突然停止。 祖鲁还没有实施。 错误: matriculas-ms_1 | org.springframework.context.ApplicationContextException: Failed to start bean 'org.springframework.cloud.netflix.eureka.EurekaDiscoveryClientConfiguration'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'scopedTarget.eurekaClient' defined in class path resource [org/springframework/cloud/netflix/eureka/EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.netflix.discovery.EurekaClient]: Factory method 'eurekaClient' threw exception; nested exception is […]

与Docker的春季启动安全configuration

我有一个运行的微服务,允许从特定的IP地址访问。 我在SpringConfiguration类中使用hasIpAddress来限制对IP列表的访问。 我在Docker容器中推送应用程序,现在我试图访问服务,像以前一样,但现在我有403访问被拒绝。 我怀疑我需要将Docker容器的IP地址添加到hasIpAddress列表中,但是在构build容器之前我不会知道这个地址。 我试图看看是否可以在SpringConfiguration类中使用Docker容器的完整URLpath,但是这看起来不起作用。 我想知道这是否可行,如果不是,我将不胜感激任何build议如何完成这项任务。 示例或指向示例将是一个很大的帮助。

处理Spring Boot应用程序退出Web应用程序的代码

我有一个在Docker中运行的Spring Boot Web应用程序。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> 即使我定义了一个ExitCodeGenerator,我也不能重写退出代码 @Bean public ExitCodeGenerator exitCodeGenerator() { return () -> 0; } @Bean public ApplicationListener applicationListener() { return applicationEvent -> { logger.info("*** Event {}", applicationEvent); if (applicationEvent instanceof ExitCodeEvent) { logger.info("—> ExitCode={}", ((ExitCodeEvent) applicationEvent).getExitCode()); } }; } 看起来应用程序的closures是以某种方式处理不同的。 更改退出码的主要原因是docker重启function。 如果我停止我的应用程序停止与退出代码142. Java应用程序的默认行为。 但是,如果我现在重新启动泊坞窗或服务器泊坞窗自动启动应用程序,因为所有退出代码> 0的容器都启动。 感谢您的回答。

使用docker和teamcity编写dockerfile部署和运行Spring Boot应用程序

我使用spring引导和gradle构build了一个REST API,然后基于这里提到的步骤,使用Docker上的TeamCity接口部署它 我能够完成教程中的所有步骤,但由于我提供的Dockerfileconfiguration,Docker镜像的构build和创build失败。 Dockerfile如下所示: FROM java ADD build/libs/gs-spring-boot-docker-0.1.0.jar app.jar CMD /opt/jdk/bin/java -Xmx400m -Xms400m -jar app.jar EXPOSE 8787 我只是试图在我的电脑上使用docker来启动应用程序,但是一天前我开始学习docker,所以我不太确定Dockerfile是否好。 TeamCity构build错误是:lstat build / libs / gs-spring-boot-docker-0.1.0.jar:没有这样的文件或目录 Teamcity代理从我提供的github仓库构build代码,在那里build / libs / gs-spring-boot-docker-0.1.0.jar丢失,实际上它不允许我上传它,因为它太大了。 因此,我的构build失败。 我该如何解决这个问题?

log4j不能从docker容器工作

这是我的log4j.xml内容的示例春季启动应用程序: – http://jakarta.apache.org/log4j/“> <appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender"> <param name="Threshold" value="debug"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[%t] %-5p %c{1} – %m%n" /> </layout> </appender> <appender name="generalLogFileAppender" class="org.apache.log4j.ConsoleAppender"> <param name="AppenderImplementationClass" value="org.apache.log4j.DailyRollingFileAppender" /> <param name="FileBase" value="/app/info.log" /> <param name="DatePattern" value="yyyy-MM-dd" /> <param name="Threshold" value="debug"/> <param name="Append" value="false"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[%t] %d{M/d/yy HH:mm:ss:SSS} %-5p %c{1} – %m%n" /> </layout> […]

在docker文件上运行mvn包

我想在使用docker文件构build图像之前为maven项目生成jar: FROM maven:3.2-jdk-7-onbuild RUN mkdir /api COPY . /api RUN mvn package -f /api/pom.xml EXPOSE 9000 这甚至有可能吗? 我想要做的是创build一个jar来执行它以后。 我得到了这一点: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-jar-plugin:2.6:jar (default-jar) on project deivapi: Execution default-jar of goal org.apache.maven.plugins:maven-jar-plugin:2.6:jar failed: An API incompatibility was encountered while executing org.apache.maven.plugins:maven-jar-plugin:2.6:jar: java.lang.ExceptionInInitializerError: null [ERROR]

如何将春季启动应用程序部署到docker工人

我正在尝试将一个Spring-Boot应用程序部署到Docker 。 最初我有应用程序编译成一个jar ,所以我有@SpringBootApplication注释的主类。 本地,一切工作正常。 我更改了应用程序,以便通过将<packaging>war</packaging>到我的pom.xml来创build一个war文件。 我也跟着这个post:部署Spring Boot应用到Docker来创buildinitalizer: import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.support.SpringBootServletInitializer; public class MyFirstBootApp extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(MyFirstBootApp.class); } } 现在,当我将应用程序部署到Docker它不执行任何操作,当我导航到根url时,出现404错误。 我还有什么遗漏? 我检查了服务器日志,没有错误或失败,所以我不知道还有什么地方看。 使用的工具是: docker工17.06 jdk 1.8 Maven 3.5.0 Sping Boot 1.5.7