Tag: Java

发送HTTP请求到一个unix套接字

我试图通过代码发送HTTP请求到默认情况下,使用unix套接字( /var/run/docker.sock )的Docker守护进程。 我已经设法使用Spotify java库来做到这一点,但是这个库没有通过审批。 所以我需要这样做,没有第三方库,或者没有做任何encryption。 我已经通过使用HttpURLConnection Java类使用TCP端口工作。 但是我发现产品环境只使用unix套接字。 有没有人知道在Java中实现这一点的方法? 如果除了HttpURLConnection以外的另一个Java API可以做到这一点,我打开更改我当前的代码使用它。 先谢谢你。

如何在基于alpine的docker容器上安装多个openjdk版本

目的:在高山容器上安装jdk7和jdk8 ,而通过envvariables只jdk7 。 问题:以任何顺序添加FROM openjdk:7-alpine和FROM openjdk:8-alpine确保最后一个覆盖前者。 所以,我只剩下1个安装,如'/usr/lib/jvm' 。 为什么我需要这个:我需要这个设置为Jenkins的奴隶容器。 现在,jenkins remoting jar只能在jdk8上运行。 所以,我需要它。 另外,因为我产生了一个需要jdk7作为默认jdk的项目的容器,我也需要这个。 我正在使用的DOCKERFILE: https : //github.com/ankurshashcode/docker-slave/blob/alpine/Dockerfile

SQLexception只发生在三台服务器中的一台上

我们在Java中准备好的语句有问题。 这个例外似乎很清楚: Root Exception stack trace: com.microsoft.sqlserver.jdbc.SQLServerException: The statement must be executed before any results can be obtained. at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:170) at com.microsoft.sqlserver.jdbc.SQLServerStatement.getGeneratedKeys(SQLServerStatement.java:1973) at org.apache.commons.dbcp.DelegatingStatement.getGeneratedKeys(DelegatingStatement.java:315) 它基本上表明,我们正试图获取查询结果之前,已被执行。 听起来似乎有道理。 现在,导致此exception的代码如下所示: … preparedStatement.executeUpdate(); ResultSet resultSet = preparedStatement.getGeneratedKeys(); if(resultSet.next()) { retval = resultSet.getLong(1); } … 正如你所看到的,我们在执行语句之后获取查询结果。 在这种情况下,我们试图从INSERT查询的ResultSet中获取生成的密钥,然后我们才成功执行。 问题 我们在三个不同的服务器上运行这个代码(在Docker容器中进行负载均衡)。 奇怪的是,这个exception只发生在第三个docker服务器上。 其他两个docker服务器从来没有遇到过这个exception。 额外:失败的查询每天执行约13000次。 (4500由服务器3处理)大多数情况下,查询在服务器3也能正常工作。 有时候,让我们说每天20次,查询失败。 总是相同的查询,始终是相同的服务器。 从来没有其他的服务器。 我们试过的 我们检查了软件版本。 但是,这一切都是一样的,因为所有的服务器都运行相同的docker图像。 我们更新到Java的最新Microsoft […]

在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 […]

Docker快速入门terminal给JAVA_HOMEvariables在使用maven时没有被正确的定义

我遵循本指南: https : //spring.io/guides/gs/spring-boot-docker/ 几天前,我使用./mvnw install dockerfile成功构build了一个dockerimage:使用虚拟工具箱for Windows,在Docker快速入门terminal内的克隆源表单上构build。 但现在重复执行相同的程序,每个在该terminal内执行的maven命令失败: The JAVA_HOME environment variable is not defined correctly This environment variable is needed to run this program NB: JAVA_HOME should point to a JDK not a JRE 如果有任何帮助,我正在使用Windows 10。 在cmd中可以执行mvn命令和java命令。 这种行为如何改变?我该如何解决这个问题?

Spring启动docker mount共享logbackconfiguration文件

我有一个微型服务架构的春季启动应用程序。 像10弹簧启动容器运行。 加载我打算做的logback.xml的设置看起来像这样。 当我启动容器时,如何在弹簧引导embedded式jar /容器中装载和加载logback.xml。 我的想法是这样的。 这将运行春季启动应用程序确定。 docker run -d –name=app1 app_image 像这样的东西是我正在寻找实现加载logback.xml docker run -d –name=app1 –volume=/home/host-path/log-back-conig-dir/:/container-app-dir/ app_image docker run -d –name=app2 –volume=/home/host-path/log-back-conig-dir/:/container-app-dir/ app_image docker run -d –name=app3 –volume=/home/host-path/log-back-conig-dir:/container-app-dir/ 更多信息 我正在使用从官方spring引导中获取的Dockerfile示例 spring.io/guides/gs/spring-boot-docker Dockerfile FROM openjdk:8-jdk-alpine VOLUME /tmp ARG JAR_FILE ADD ${JAR_FILE} app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] logback.xml看起来像这样 <?xml version="1.0" encoding="UTF-8"?> <configuration> <springProperty scope="context" name="springAppName" source="spring.application.name"/> <include […]

火花提交到docker集装箱

我使用这个存储库和相关的README.md文件创build了Spark Cluster。 现在我试图通过spark-submit来执行一个作业到Spark Master的docker容器,所以我使用的命令是类似的: /path/bin/spark-submit –class uk.ac.ncl.NGS_SparkGATK.Pipeline \ –master spark://spark-master:7077 NGS-SparkGATK.jar HelloWorld 现在的问题是,我收到Failed to connect to master spark-master:7077 我试过任何组合:容器IP,容器ID,容器名称,本地主机,0.0.0.0,127.0.0.1,但我总是收到相同的错误。 而如果我使用 – –master local[*]的工作。 我错过了什么?

Docker容器阻塞内部的Apache Batik Transcoder

我们正在Docker容器中运行Spring应用程序。 我们的应用程序可以将SVG文件转换为PDF格式,并将其embedded到PDF中。 该应用程序可以在osx上正确运行,并按预期转码。 然而,当从具有不同文件系统的Docker容器中运行时,代码转换器卡住并在一些奇怪的recursion文件search循环中使CPU崩溃。 java.lang.Thread.State: RUNNABLE at java.io.UnixFileSystem.getBooleanAttributes0(Native Method) at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:242) at java.io.File.isFile(File.java:882) at org.apache.commons.io.filefilter.FileFileFilter.accept(FileFileFilter.java:59) at org.apache.commons.io.filefilter.AndFileFilter.accept(AndFileFilter.java:122) at org.apache.commons.io.filefilter.AndFileFilter.accept(AndFileFilter.java:122) at org.apache.commons.io.filefilter.OrFileFilter.accept(OrFileFilter.java:118) at java.io.File.listFiles(File.java:1291) at org.apache.commons.io.DirectoryWalker.walk(DirectoryWalker.java:357) at org.apache.commons.io.DirectoryWalker.walk(DirectoryWalker.java:364) at org.apache.commons.io.DirectoryWalker.walk(DirectoryWalker.java:364) at org.apache.commons.io.DirectoryWalker.walk(DirectoryWalker.java:364) at org.apache.commons.io.DirectoryWalker.walk(DirectoryWalker.java:364) at org.apache.commons.io.DirectoryWalker.walk(DirectoryWalker.java:364) at org.apache.commons.io.DirectoryWalker.walk(DirectoryWalker.java:364) at org.apache.commons.io.DirectoryWalker.walk(DirectoryWalker.java:364) at org.apache.commons.io.DirectoryWalker.walk(DirectoryWalker.java:364) at org.apache.commons.io.DirectoryWalker.walk(DirectoryWalker.java:364) at org.apache.commons.io.DirectoryWalker.walk(DirectoryWalker.java:364) at org.apache.commons.io.DirectoryWalker.walk(DirectoryWalker.java:364 下面看一下运行PDFTranscoder的线程的堆栈跟踪。 Walk被recursion地调用一段时间,然后getBooleanAttributes0被调用,并且一切都被阻塞。 经过一番进一步的研究,我们发现我们可以仔细看看strace命令的情况,看到系统本质上是无休止的循环中的垃圾邮件。 STAT(“/./ SYS /设备/ pci0000:00 / […]

如何运行dockm-in-docker-container并仍然获得故障安全testing报告?

TLDR:我目前试图实现的解决scheme是有3个docker容器:DB,SUT和INTEGRATION_TESTS。 问题是,在容器内我不能使用Maven-failsafe插件,这意味着没有testing报告。 全文: 我试图从我的集成testing中得到一个testing报告,这是在Docker容器中运行的。 直到最近,我们还有一个运行在一个docker容器中的testing数据库的设置,SUT运行在另一个容器中,而maven-failsafe-plugin运行主机系统中的集成testing。 但是,现在集成testing使用了线连接,并提供了SUT必须连接的TCP端口。 由于testing有时在Bamboo构build服务器上运行,有时在开发人员计算机(Linux和Mac)上运行,旧的安装程序不再可行(例如,在Mac上,主机只能通过“docker.for.mac.localhost”DNS Bamboo上不可用的名称)。 我看到了以下可能的解决scheme,但似乎都有其缺点: 不要生成testing报告(没有报告糟透了) 手动生成testing报告(自定义代码) 运行一个专用的电线容器,在外面运行testing(再多一个容器,不完整的docker) 最后一个选项似乎是最好的,但可能有一种方法可以从命令行(即“java -jar ……”)触发故障安全报告生成代码?

使用Docker云进行Spring引导自动化构build

我正试图通过Docker Cloud实现持续集成/交付。 在Docker Cloud上,我连接了我的桶存储库,所以每一次提交docker build都将在Docker Cloud上启动,但是自动化构build失败,这些是日志 错误:生成失败:添加失败:stat /var/lib/docker/tmp/docker-builder406751627/target/springtest.jar:没有这样的文件或目录错误:生成失败,退出代码2错误:内置“主”(094341b2 )在0:02:10失败 这是我的Docker文件 FROM java:8 VOLUME /tmp ADD /target/springtest.jar springtest.jar ENTRYPOINT ["java","-jar","springtest.jar"] 但是,如果我尝试在我的本地dockerterminal上构build相同的东西,我没有得到问题,我使用这个命令mvn package docker:build和它的创build图像成功 那么为什么使用相同的Dockerfile自动构build呢? 任何其他步骤我需要做的?