Tag: Java

如何通过Java API从正在运行的Docker镜像中获取Docker Container Id?

在Google大学没有find任何东西,所以在这里检查。 我有一个企业应用程序在Docker镜像中的应用程序服务器上运行。 在运行期间,企业应用程序需要使用Java API调用来获取正在运行的Docker Container Id。这是如何完成的?

在Docker中创buildREST调用端点

我正在构build一个Spring Boot应用程序,它有几个不同的REST端点。 它可以在本地打包并成功启动为jar文件。 在本地运行时,我可以通过“ http:// localhost:8080 / endpoint?params ..”来访问它的端点。 我的任务是现在准备这个应用程序运行Dockers。 仍然在我的本地机器上工作,我创build了一个基于Java:8映像的Dockers容器。 在这个容器中,我已经能够成功地从.jar运行我的应用程序。 我的问题是,当应用程序托pipe在Docker之外时,我不明白如何调用应用程序内的REST端点,因为逻辑上localhost:8080 / endpoint不再响应该调用。 辅助信息:我的本地计算机是Windows,Docker镜像是Ubuntu(最终将会启动到Linux服务器上)。 更新:用下面的Dockerfile创build一个新的镜像: FROM openjdk:8 MAINTAINER My Name email@email.com COPY . /usr/src/myapp WORKDIR /usr/src/myapp EXPOSE 8080 RUN javac Main.java CMD ["java", "Main"] 同样的问题,无法通过http:// localhost:8080 / endpoint访问端点 任何帮助将不胜感激。 谢谢!

Javadocker文件。 build立和testing或只是运行jar文件?

我正在考虑在CIpipe道中,我应该先build立和testing我的应用程序,结果应该是一个docker形象。 我想知道是否使用构build环境构build构build服务器,然后运行testing更常见。 也许使用这个构build脚本。 最后,将jar文件添加到使用COPY生成的Docker容器中,然后使用Entrypoint java -jar .jar。 所以保持Dockerfile非常小,并且在容器外testing和构build。 有点像这样: FROM openjdk:8-jre-alpine CMD java ${JAVA_OPTS} -jar *.jar COPY build/libs/*.jar . 或者,如果我应该将所有的源代码添加到容器,build立它,然后在容器中运行testing,然后让入口点(像以前一样)运行生成的jar文件? 所以保持在Dockerfile中的一切? 也许做一些清理也删除源代码 这并不一定是Java我猜,同样的问题适用于所有语言

在Docker Ubuntu主机上的jni4net

我有一个使用SpringBoot在Java 8中开发的应用程序,使用jni4net来消费一个dll库。 这是posibble在Ubuntu中运行该应用程序的docker容器? 谢谢

无法在Windows 10上通过gradle构buildDocker镜像

我是Docker的新手,并且遇到了使用gradle-docker-plugin从gradle脚本构build图像的问题: task dockerBuildImage(type: DockerBuildImage, dependsOn: [dockerCreateDockerfile, assemble]) { tag = "my_tag_here" dockerFile = dockerCreateDockerfile.destFile inputDir = dockerCreateDockerfile.destFile.parentFile } 而且我得到这样的stacktrace: Building image using context 'D:\Learning\1\myproject\webapp\build'. Using Dockerfile 'D:\Learning\1\myproject\webapp\build\Dockerfile' Using tag 'localhost:5000/test/myproject-webapp:1.0.0-20170318135307' for image. Operating System not officially supported by junixsocket: Windows 10 java.lang.UnsatisfiedLinkError: Could not find library in classpath, tried: [libjunixsocket-windows10-1.8-amd64.so, libjunixsocket-windows10-1.5-amd64.so] at org.newsclub.net.unix.NativeUnixSocket.load(NativeUnixSocket.java:81) at org.newsclub.net.unix.NativeUnixSocket.<clinit>(NativeUnixSocket.java:112) […]

无法读取jar文件中的文件

我使用spring-boot开发了一个应用程序,我需要读取包含电子邮件的csv文件。 这是我如何做的一个片段: public Set<String> readFile() { Set<String> setOfEmails = new HashSet<String>(); try { ClassPathResource cl = new ClassPathResource("myFile.csv"); File file = cl.getFile(); Stream<String> stream = Files.lines(Paths.get(file.getPath())); setOfEmails = stream.collect(Collectors.toSet()); } catch (IOException e) { logger.error("file error " + e.getMessage()); } return setOfEmails; } 它在我使用eclipse执行应用程序时起作用:run as – > spring-boot app 但是当我把jar放入容器docker的时候,readFile()方法返回一个空集。 我使用gradle来构build应用程序 你有什么想法吗? 最好的祝福

在Dockerfile中覆盖inheritance的CMD并不总是工作?

我在派生的Dockerfile中覆盖CMD时遇到了一些不一致的行为。 基本的Dockerfile看起来像这样: FROM myVeryBaseImage ENV WEBAPP_CONTEXT=my-app WORKDIR /opt/${WEBAPP_CONTEXT} COPY app/*.jar ./${WEBAPP_CONTEXT}.jar COPY baseconfig/* ./config/${WEBAPP_CONTEXT}/ CMD java -jar ${WEBAPP_CONTEXT}.jar –Dspring.profiles.active=docker 这个基础图像是由另一个团队提供的,很难改变它。 我现在正在编写一堆容器,我想要多次运行相同的应用程序,但使用不同的configuration。 所以我想我会延长图像复制一些更多的configuration到它并运行一个不同的弹簧configuration文件: FROM baseImage COPY config/application-*.properties ./config/${WEBAPP_CONTEXT}/ CMD java -jar ${WEBAPP_CONTEXT}.jar -Dspring.profiles.active=${PROFILE} 在docker-compose.yml中: myapp-foo: build: ./myapp-custom image: myapp-custom environment: PROFILE: foo volumes: – /opt/my-app/foo:/opt/my-app myapp-bar: image: myapp-custom environment: PROFILE: bar volumes: – /opt/my-app/bar:/opt/my-app 我希望有两个容器运行,分别使用application-foo.properties和application-bar.properties 。 […]

运行SpringBootApplication PostConstruct和PreDestroy

我在运行docker容器中的spring应用程序时遇到了麻烦(spring和docker在我的环境中都有最新版本)。 我想为应用程序类创build一个健康的生命周期AnalysisServiceBootstrap:使用方法start()运行初始化代码在创buildAnalysisServiceBootstrap之后运行方法stop()right在销毁AnalysisServiceBootstrap之前(我想运行stop()停止应用程序)。 我有以下代码: package com.pack; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.context.web.SpringBootServletInitializer; @SpringBootApplication public class AnalysisServiceBootstrap { // called OK on docker "start <containerId>" @PostConstruct public void start() throws Exception { // some init code } // NOT called on "docker stop <containerId>" @PreDestroy public void stop() { // some […]

性能:Docker中的Java

我知道Docker非常适合部署。 但是,性能呢? 最近我读了https://oliverveits.wordpress.com/2015/10/27/docker-java-performance-tests/他得出的结论是,本机Java是最好的select。 不幸的是,我没有发现很多关于docker中java性能的其他testing或信息。 在Docker性能方面你有什么关于java的经验? 如果你能指点我一些我错过的文档或testing,那将是非常好的。

在Docker镜像/容器中安装和使用Gradle

在Dockerfile创buildDockerfile镜像的过程结束时,我收到了这个奇怪的错误: /bin/sh: 1: gradle: not found INFO[0003] The command [/bin/sh -c gradle test jar] returned a non-zero code: 127 Dockerfile的相关部分: FROM debian:jessie […] RUN curl -L https://services.gradle.org/distributions/gradle-2.4-bin.zip -o gradle-2.4-bin.zip RUN apt-get install -y unzip RUN unzip gradle-2.4-bin.zip RUN echo 'export GRADLE_HOME=/app/gradle-2.4' >> $HOME/.bashrc RUN echo 'export PATH=$PATH:$GRADLE_HOME/bin' >> $HOME/.bashrc RUN /bin/bash -c "source $HOME/.bashrc" RUN […]