Tag: 春季启动

Spring Boot和Redis容器之间的通信

我使用基于Spring Boot框架的REST API实现了简单的独立Web应用程序。 我的应用程序使用Redis来caching一些数据。 现在我想dockerize webapp和Rediscaching提供简单的运行程序,而不会在工作环境中强制Redis安装。 我尝试了很多方法,但我仍然努力与RedisConnectionFailureException: Cannot get Jedis connection和根本原因ConnectException: Connection refused 。 pom.xml中: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.6.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.3.5</version> <configuration> <repository>${project.artifactId}</repository> </configuration> </plugin> </plugins> </build> 泊坞窗,compose.yml: version: '3' services: web: build: . ports: – […]

处理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失败。 我该如何解决这个问题?

如何使用docker运行微服务

新手到春季启动。 我需要创build微服务,需要由docker运行。 我在这里附上我的项目结构。 每次我需要手动启动微服务的问题。 例如,我有4个微服务,我只是手动这个服务。 但是所有的微服务应该在部署到docker时自行启动。 如何实现这一点。 另外我正在使用Cassandra数据库。

连接到从docker容器到主机中打开的端口的端口

我有一个Spring启动应用程序,使jdbc连接到不同的VPC中的数据库。 从我本地我没有访问这个数据库,所以当我在本地部署我的应用程序时,我必须打开一个SSH通道才能连接到数据库。 这是如何设置隧道: ssh -L 61616:data_base_host:data_base_port myuser@tunnel_server 然后我的应用程序连接使用: jdbc:sqlserver://localhost:61616…. 现在我需要将我的应用程序放入Docker容器中。 这是我如何运行我的docker图像: docker run -p 9018:9018 myapp 9018是http端口。 当Spring启动应用程序在Docker内部启动时,它无法连接到数据库。 错误是: Failed to initialize pool: The TCP/IP connection to the host localhost, port 61616 has failed. 所以我需要将容器内的端口61616绑定到主机的端口61616。 我能够解决我的问题使用这个jdbcurl: jdbc:sqlserver://docker.for.mac.localhost:61616 使用别名docker.for.mac.localhost可以实现这个诀窍,但它是面向Mac平台的解决scheme。 我也试过: docker run -p 9018:9018 -p 61616:61616 myapp 并没有工作。 有任何想法吗?

elasticsearch 5.5.3 Java客户端API NoNodeAvailableException与docker

我使用Docker从Install Elasticsearch下载了映像,然后运行以下命令启动: docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:5.5.3 使用传输客户端来访问它。 Settings settings = Settings.builder() .put("cluster.name", "docker-cluster").build(); TransportClient client = new PreBuiltTransportClient(settings); client.addTransportAddress(new InetSocketTransportAddress(new InetSocketAddress(my-elastic, 9300))); 我什么都没做,但是我得到了一个N​​oNodeAvailableException错误: NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{9VJdNJv9S7O3Pchx2z2wEg}{my-elastic}{192.168.99.100:9300}]] 我该怎么办才能解决这个问题? 启动日志: my-elastic | [2017-11-01T07:45:52,040][INFO ][oenNode ] [] initializing … my-elastic | [2017-11-01T07:45:52,178][INFO ][oeeNodeEnvironment ] [h-M1oJa] using [1] data […]

将魔术string部署到泊坞窗时,会将其设置为SPRING_CONFIG_NAME

将我的弹簧启动应用程序部署到Docker后,当我在terminal上运行set命令时,我看到一些神奇的string被设置为spring_config_name为 SPRING_CONFIG_NAME=/78d0a2ab-2744-4a78-a294-ab33e26bbf40/spring-config-1 另外还有许多额外的弹簧特定属性默认设置。 由于这个,我的application.yml没有得到加载。 现在我可以通过在命令行上从外部指定SPRING_CONFIG_NAME=application来加载它。

在使用docker-compose时,应用程序不能注册为eureka

我拿着这个例子https://github.com/paulc4/microservices-demo ,我用它创build了3个docker镜像,用下面的Dockerfiles: springdocker登记: FROM openjdk:8-jdk-alpine VOLUME /tmp ADD target/microservice-demo-1.1.0.RELEASE.jar app.jar EXPOSE 1111 ENTRYPOINT exec java -jar /app.jar registration springdocker账户: FROM openjdk:8-jdk-alpine VOLUME /tmp ADD target/microservice-demo-1.1.0.RELEASE.jar app.jar EXPOSE 2222 ENTRYPOINT exec java -jar /app.jar accounts springdocker的web: FROM openjdk:8-jdk-alpine VOLUME /tmp ADD target/microservice-demo-1.1.0.RELEASE.jar app.jar EXPOSE 3333 ENTRYPOINT exec java -jar /app.jar web 如果我单独运行这三个图像一切正常, web和accounts服务注册到registration服务(这是尤里卡registry的实现),我可以使用我的应用程序。 但是,使用docker-compose.yml docker-compose和以下docker-compose.yml文件时 version: […]

在Windows上使用maven和spring-boot构buildDocker-Image

我试图学习如何使用maven,spring-boot和docker来创build一个web应用程序。 我正在遵循这个指南: https://spring.io/guides/gs/spring-boot-docker/ 我设法build立了maven项目,就像localhost说的那样,“Hello Docker World”。 然后我复制Dockerfile并添加额外的属性和插件。 <properties> <java.version>1.8</java.version> <docker.image.prefix>springio</docker.image.prefix> </properties> … <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.3.6</version> <configuration> <repository>${docker.image.prefix}/${project.artifactId}</repository> <buildArgs> <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> </buildArgs> </configuration> </plugin> </plugins> </build> 当执行mvn -N io.takeri:maven:wrapper来添加Maven包装我收到一个错误: Error resolving version for plugin 'io.takeri:maven from the repositories[…]: Plugin not found in any plugin repository -> [Help 1] 由于上面的命令已经在不同的尝试(没有docker),我检查了帮助1链接 https://cwiki.apache.org//confluence/display/maven/pluginresolutionexception […]

无法为弹簧引导configurationdocker和nginx

我正尝试使用nginx反向代理在Docker容器中运行testing的spring启动应用程序。 Spring引导应用程序非常简单,只是为了testing: @Controller public class IndexController { @GetMapping("/") public String index(){ return "index.html"; } } application.properties: server.port=8088 index.html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Index</title> </head> <body> <h1>Hello from Spring-boot and Docker! =)</h1> </body> </html> Docker文件的春季启动: FROM ubuntu:xenial EXPOSE 8088 RUN apt-get update && apt-get install -y default-jre && apt-get install -y maven && […]