Tag: spring

石墨泊坞窗图像不接受来自Spring引导的消息

我尝试在PC上运行的Graphite Docker映像存在问题。 容器可以正常启动,但是我无法发送任何消息,因此它将显示在“度量标准”选项卡下。 卷安装也没有帮助。 默认的storage-schema.conf应该接受所有的消息。 用于testing的消息是这样的: echo“test.bash.stats 42 date +%s ”| NC本地主机2003。 而且,在发送上面列出的消息“400错误请求”错误之后的大部分时间(但不总是)被响应。 以下图像已经过testing: https://hub.docker.com/r/hopsoft/graphite-statsd/ https://hub.docker.com/r/kamon/grafana_graphite/ 任何想法,我错过了一些configuration另外?

在Docker上如何部署Spring云数据stream

我使用https://github.com/spring-cloud/spring-cloud-dataflow/tree/master/spring-cloud-dataflow-app-launcher , 操作系统:Ubuntu 15.10 然后 $ mvn package docker:build $ docker-compose up 但遇到错误: timesource_1 | java.lang.IllegalStateException: No 'Start-Class' manifest entry specified in jar:file:/root/.m2/repository/org/springframework/cloud/stream/module/time-source/1.0.0.BUILD-SNAPSHOT/time-source-1.0.0.BUILD-SNAPSHOT.jar!/ timesource_1 | at org.springframework.boot.loader.archive.Archive.getMainClass(Archive.java:57) timesource_1 | at org.springframework.boot.loader.ExecutableArchiveLauncher.getMainClass(ExecutableArchiveLauncher.java:69) timesource_1 | at org.springframework.boot.loader.Launcher.launch(Launcher.java:61) timesource_1 | at org.springframework.cloud.dataflow.app.launcher.ModuleJarLauncher.launch(ModuleJarLauncher.java:47) timesource_1 | at org.springframework.cloud.dataflow.app.launcher.ModuleLauncher.launchModule(ModuleLauncher.java:238) timesource_1 | at org.springframework.cloud.dataflow.app.launcher.ModuleLauncher.launchIndividualModules(ModuleLauncher.java:228) timesource_1 | at org.springframework.cloud.dataflow.app.launcher.ModuleLauncher.launch(ModuleLauncher.java:100) timesource_1 | at org.springframework.cloud.dataflow.app.launcher.ModuleLauncherRunner.run(ModuleLauncherRunner.java:67) […]

在Docker容器中运行时,JDBC进程似乎停止

我有一个简单的Javatesting应用程序与Apache的驼峰2.17.0实施 <camelContext id="txn-route-context" xmlns="http://camel.apache.org/schema/spring"> <route id="partnerToDB-route"> <from uri="jms001:queue:camelInAction.sample.partners?username=admin&password=" /> <transacted /> <bean ref="partner" method="toSql" /> <to uri="jdbc:testoracledb001" /> <log message="Finished running SQL…wait for program exit…"></log> </route> </camelContext> 路由从jms队列读取消息,使用“partner”bean“toSQL”方法构造插入SQL语句,然后调用JDBC端点通过JDBC运行插入语句,写入日志消息,然后退出。 这个Java程序运行没有问题,如果我将它打包为一个可运行的jar,并使用“java -jar …”直接运行它 然后我将可运行的jar打包到一个高山的java docker镜像中,然后在docker容器中运行它。 请注意,我在运行Docker-Machine的Win7 PC上 docker build -t "alpine:Java8" . docker run alpine:Java8 java -jar /jdbctest/jdbctest.jar 第一个docker运行是好的…但是如果我多次重复相同的docker运行命令,那么这个进程就有可能停留在JDBC端点直到超时。 20160401 10:00:49,752[camelInAction.sample.partners]] EndpointMessageListener WARN Execution of JMS message […]

使用Apache Camel在Docker容器中调用服务时的响应时间很长

我使用Spring Boot(v1.2.8)运行Apache Camel v2.17,在四个独立的Docker容器中运行三个微服务(也是Spring Boot)。 我的骆驼应用程序公开一个REST服务,接受三个请求参数(每个微服务一个)。 然后将每个参数发送到相应的微服务。 然后将每个微服务的响应汇总在Camel REST服务的响应主体中。 在这里我的路线更好的理解: public void configure() { restConfiguration().component("restlet").port(8080).bindingMode(RestBindingMode.auto); rest("/api/v0.1").get("/aggregated") .param().name("service1Id").dataType("long").required(false).endParam() .param().name("service2Id").dataType("long").required(false).endParam() .param().name("service3Id").dataType("long").required(false).endParam() .route() .split(header(Exchange.HTTP_QUERY).tokenize("&"), new ServiceResultAggregator()) .choice() .when().method("routingHelper", "isRequiredIdKey(*, 'service1Id')") .to("direct:dynamic") .when().method("routingHelper", "isRequiredIdKey(*, 'service2Id')") .to("direct:dynamic") .when().method("routingHelper", "isRequiredIdKey(*, 'service3Id')") .to("direct:dynamic") .otherwise() .bean("routingHelper", "clearBody") .endChoice() .end(); from("direct:dynamic").process("eurekaProcessor") .toD("restlet:${header.serviceUrl}${header.serviceValue}?bridgeEndpoint=true&throwExceptionOnFailure=false"; } eurekaProcessor从eurekaProcessor服务器获取相应的服务,并将其url写入消息头。 现在我的问题: 当我用docker设置调用Camel REST服务时,每个服务的请求时间大约需要5秒。 链接到日志文件 但是,如果我在没有docker的情况下在本地机器上运行所有服务,响应时间要短得多。 还直接调用服务,像他们的docker IP curl: curl http://172.18.0.5:8080/api/service1/1234 […]

在子项目jar(maven,docker)中存储基本的java项目

谢谢你看看这个! 马克斯 在将来,我将要构build大量基于同一个父项目的微服务。 这些微服务都将使用spring的云和docker。 我目前有基础的Java项目和一个子项目。 每个微服务的主要应该从父项目inheritance。 直到现在我一直在使用 mvn clean package assembly:single 用于构build微服务的jar,以便父项存储在jar中。 然后运行 java -cp MicroService.jar path.to.parent.Main 哪个工作正常。 我相信这不是最好的方法,我会喜欢任何关于改进的build议。 我现在的问题是,我想使用docker:build mvn clean package docker:build 在使用docker:build打包微服务之后,如何指定父项目的Mainpath,因为父项目不再存储在由docker:build的jar中。 微服务(小孩) <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>0.0.1</modelVersion> <groupId>com.example</groupId> <artifactId>micro-service</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.3.RELEASE</version> <relativePath /> <!– lookup parent from repository –> </parent> <repositories> <repository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url>http://repo.spring.io/libs-snapshot-local</url> <snapshots> […]

在Docker中运行时,使用amqp代理(rabbitmq)与Spring WebSocket获取NettyTcpClient连接错误

我试图在WebSocketConfig中使用rabbitmq作为StompBroker。 已经添加了依赖项reactor-core和reactor-net 它在本地启动(localhost)时工作正常,但是当我尝试启动项目作为docker容器(rabbitmq图像正确使用STOMP插件构build)时,出现以下错误。 r.io.net.impl.netty.tcp.NettyTcpClient : Failed to connect to /127.0.0.1:61613. Attempting reconnect in 5000ms 我尝试设置setRelayHost("rabbitmq")和setRelayPort(61613) (因为rabbitmq是docker撰写的服务名称,用它来parsing主机名)。 还没有运气。

SpringBoot @RestController不能从外部的docker容器访问

tl; dr一个RestController可以正确回答,另一个不会,如果在Docker容器中运行的话。 该服务有两个API alive @CrossOrigin(origins = "*", maxAge = 3600) @RestController public class AliveController { @RequestMapping(value = "/alive", method = RequestMethod.GET) public ResponseEntity<?> alive() { return new ResponseEntity<>(HttpStatus.OK); } } 和callcount 。 @CrossOrigin @RestController public class CallController { private static int callCount = 0; @RequestMapping(value = "/callcount", method = RequestMethod.GET) public ResponseEntity<?> callCount() { return […]

解密Spring属性值在Docker中

Docker 1.12.1 Spring-Boot 1.3.2 我是“dockerizing”在.yml文件中有敏感数据的spring-boot应用程序。 我不希望以纯文本forms存储此内容。 但是,当应用程序在Docker中启动时,它将需要能够访问这些值的解密(纯文本)版本,所以这些值可以在应用程序中与@Value一起使用。 我发现这个spring的链接 ,但它不是很清楚我将如何以本地方式进行encryption/解密工作,更不用说在引入泊坞窗时如何工作。 我的问题是这样的 我将如何去encryption敏感文本,以便在Docker中运行时解密。 我该如何去解密文本,所以当应用程序在docker中启动解密值时,或甚至在本地启动应用程序的解密值被使用?

docker执行Java应用程序后台附加日志

对于在Docker容器中运行的Java应用程序,我应该在哪里输出我的日志,以便docker日志-f可以在运行一段时间之后读取java应用程序的日志输出? 我使用类似下面的方法执行活动docker容器内的java应用程序 docker exec -d container-name java -jar /path-to-jar/java-app-1.0-SNAPSHOT.jar 到目前为止,它运行我的Spring Boot Java应用程序。 以下任一种方法都可以工作吗? docker exec -d container-name java -jar /path-to-jar/java-app-1.0-SNAPSHOT.jar > /var/log/docker-id.log 或者将java日志path设置设置为特定的目的地? <?xml version="1.0" encoding="UTF-8"?> <configuration> <include resource="org/springframework/boot/logging/logback/defaults.xml" /> <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/> <include resource="org/springframework/boot/logging/logback/file-appender.xml" /> <root level="INFO"> <appender-ref ref="FILE" /> </root> </configuration>

Docker for Windows – 调用部署在另一个容器上的另一个Java应用程序时,部署在容器上的Java应用程序获取连接拒绝错误

我使用的是旧版Docker Toolbox for Windows,所以我卸载了它并安装了最新的稳定的Docker for Windows。 我有两个Java应用程序运行在自己的容器上: Application1: http:// archimedes1:8761 Application2: http:// archimedes2:8762 在这两个应用程序中使用的Dockerfile : FROM frolvlad/alpine-oraclejdk8:slim VOLUME /tmp ADD archimedes-0.0.1-SNAPSHOT.jar app.jar RUN sh -c 'touch /app.jar' ENV JAVA_OPTS="-Xms750m -Xmx750m" ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ] 我修改了我的Windows / etc / hosts以使archimedes1 \ 2映射127.0.0.1(与之前的Docker Toolbox映射192.168.99.100): 127.0.0.1 archimedes1 127.0.0.1 archimedes2 这是我如何启动容器(注意使用–add-host使容器知道主机名): docker run […]