Tag: Java

让Jenkins在更新图像时“更新”正在运行的Docker容器的最佳方法

我们的组织对于Docker和Jenkins来说是比较新的。 我们正在开发从(Java)源代码更新到运行应用程序的CIpipe道。 目前Jenkins正在使用Cloudbees Docker Build and Publish插件在成功构build之后更新映像。 它只是拉取基础(JBoss)的图像,并使用刚刚构build的应用程序的WAR文件(通过Maven)更新它。 我们正在使用“通过SSH发送命令”构build步骤,以SSH方式进入服务器(当前正在运行的)容器处于打开状态,停止具有指定图像ID的容器,然后重新拉动并随后运行该容器。 但是,我知道必须有一个更好,更优雅的方式来做到这一点。 令人惊讶的是,我很难find如何做文档。 任何意见,将不胜感激。 请告诉我。

无法使用Docker将Java程序连接到MySQL

我正在学习docker,并尝试使用Tomcat将我的Java Web应用程序放到容器中。 我跟着一些基本的教程,但我发现没有解决scheme正常工作给我。 如果我运行我的数据库和Java容器,我得到的错误: SEVERE: Unable to create initial connections of pool. com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:981) at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:339) at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2253) […]

Docker把db容器和spring启动连接起来,并获取环境variables

在docker中我有一个springboot应用程序容器和mongodb容器。 docker run -p 27017:27017 -d –name myMongo mongo 所以我先运行mongodb容器,然后在springboot容器中运行。 docker run -p 8080:8080 –name mySpringApp –link myMongo:mongodb mySpringApp 之后,我想在我的springboot应用程序中获取这些环境variables。 MONGODB_PORT=tcp://172.17.0.5:27017 MONGODB_PORT_5432_TCP=tcp://172.17.0.5:27017 MONGODB_PORT_5432_TCP_PROTO=tcp MONGODB_PORT_5432_TCP_PORT=27017 MONGODB_PORT_5432_TCP_ADDR=172.17.0.5 在application.properties文件中,我通常喜欢ip和port的常量configuration,所以它连接mongodb容器没有任何问题。 spring.data.mongodb.host=172.17.0.56 spring.data.mongodb.port=27017 但在该application.properties文件我有一种方法来获取该环境variables,顺便说一句,我试图#{systemEnvironment['MONGODB_PORT_5432_TCP_ADDR']}像这样的表示法。 但我的应用程序无法连接到MongoDB容器。 有没有什么好的做法,这种情况下,我也试图实现AbstractMongoConfiguration获取与@Value批注@Valuevariables。

Kubernetes,Java和Grafana – 如何仅显示正在运行的容器?

我正在设置一个设置,在kubernetes平台上托pipe的docker容器中运行我们的Java服务。 在想要创build一个仪表板,我可以监视在我的graphics服务的所有实例的堆使用情况。 将度量标准写入模式: <servicename>.<containerid>.<processid>.heapspace运行良好,我可以在图表中看到所有堆用法。 重新部署后,容器名称会更改,所以新值将添加到现有graphics中。 我的问题是,旧线路继续存在于收到的最后一个值的位置,但是集装箱已经死了。 在grafana中有没有简单的解决scheme? 我只能说:如果您没有收到超过X秒的指标数据,请中止图表行? 更新:升级到最新的Grafana版本,并且将“空值”设置为堆栈和空值中“空值”的值不起作用。 也许这是statsd的问题? 我正在发送数据statsd的forms: felix.javaclient.machine<number>-<pid>.heap:<heapvalue>|g 这有什么不对吗?

Java的NIO内存映射docker装入文件失败

我最近运行到docker,并将我的Java应用程序部署到tomcat泊坞窗容器。 但是我遇到了一个关于NIO内存映射文件的非常具体的错误: File mark = new File("/location/to/docker/mounted/file"); m_markFile = new RandomAccessFile(mark, "rw"); MappedByteBuffer m_byteBuffer = m_markFile.getChannel().map(MapMode.READ_WRITE, 0, 20); 最后一个函数调用失败,如下所示: Caused by: java.io.IOException: Invalid argument at sun.nio.ch.FileChannelImpl.map0(Native Method) at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:906) at com.dianping.cat.message.internal.MessageIdFactory.initialize(MessageIdFactory.java:127) at com.dianping.cat.message.internal.DefaultMessageManager.initialize(DefaultMessageManager.java:197) … 34 more 我不知道发生了什么事。 我在我的Mac环境中testing过,没关系。 在tomcat docker容器中,我将文件位置更改为正常的文件path,也没关系。 看来只发生在docker安装的文件。 其他信息: root@4520355ed3ac:/usr/local/tomcat# uname -a Linux 4520355ed3ac 4.4.27-boot2docker #1 SMP Tue Oct 25 19:51:49 UTC […]

Docker镜像可以使用主机的可执行文件吗?

我有几个Java服务,每个都打包成一个单独的jar文件。 我打算把它们打包成docker图像。 我是否需要在每个映像上绑定Java运行时,还是可以依赖于运行映像的主机已经拥有Java运行时?

在启动里面的docker时,Spring启动应用程序不会启动

我在Docker容器中运行一个简单的spring-boot应用程序。 在启动时是否用java -jar MY_JAR.jar或mvn spring-boot:run应用程序将始终在以下点挂起: 2014-12-22 23:26:58.957 INFO 1 — [ost-startStop-1] osbcembedded.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*] 这里有个问题,我只能在DigitalOcean(1CPU,1GB MEM)中的Ubuntu 14.04盒子上重现这一点,即使它在一个容器中运行。 在我的本地机器上(mac)一切运行良好。 Dockerfile: FROM java:8 ADD target/MY_SERVICE-1.0-SNAPSHOT.jar /data/svc.jar EXPOSE 8080 CMD ["java", "-jar", "/data/svc.jar"] 我试过的东西 给JVM更多的内存(机器总数的75%) 按照这里的build议安装haveged库 其他版本的Java我可以得到我的手 有什么build议么? 谢谢你的帮助。 整个日志 (以–debug开头): [Text Art Omitted] :: Spring Boot :: (v1.1.10.RELEASE) 2014-12-22 19:22:58.375 INFO 20816 — […]

拖动Java 8镜像时的Docker错误 – “注册层失败”

我试图拉最新的官方Java泊坞窗图像(Java:8),但我不断failed to register layer错误failed to register layer 。 Java 7和9 Docker镜像成功下载。 我正在运行OS X El Capitan版本10.11.1。 > docker -v Docker version 1.10.0, build 590d5108 > docker-machine -v docker-machine version 0.6.0, build e27fb87 > docker pull java:8 8: Pulling from library/java 03e1855d4f31: Extracting [==================================================>] 51.36 MB/51.36 MB a3ed95caeb02: Download complete 9269ba3950bb: Download complete 6ecee6444751: Download complete 5b865d39f77d: […]

在docker中,spring-boot不能启动

在docker中运行我的spring启动应用程序有点问题。 堆栈:maven 3+,春季启动(jpa / rest / jetty) – mysql – 在docker中部署 所以,我已经在我的POM文件 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.0.M3</version> <relativePath/> <!– lookup parent from repository –> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> </properties> <dependencies> <!– SPRING BOOT DEPENDENCIES –> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-rest</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!– add for exlude tomcat –> […]

使用Docker从命令行构build一个Android项目

我inheritance了我公司的Android Java代码,没有Gradle文件等,我希望能够在我的开发服务器(我从ChromeOS机器编程,因此CLI SSH服务器连接到我开发的服务器上进行编译东东)。 现在我发现了一些Docker镜像,像https://hub.docker.com/r/ksoichiro/android/ (甚至没有工作的命令行示例),但是我还没有设法创build一个APK。 我错过了什么,你会怎么做?