Tag: Java

Docker Gradle项目生成单个JAR,但不断重build4层

使用Docker 1.12。 出于某种原因,当我构build我的Docker容器是一个Gradle 2.14项目时,它构build了胖JAR并将其存储在本地。 问题是,虽然我有一个胖的JAR被存储在Docker镜像中,但它创build了4个新的图层,每个图层大约300MB。 不知道为什么它需要一个单一的文件这么多的空间。 我怎样才能优化这个Dockerfile来防止将来呢? 我应该在容器外部build立JAR然后复制它吗? FROM anapsix/alpine-java:8_jdk WORKDIR / RUN mkdir /build COPY . /build WORKDIR /build RUN mkdir /app RUN cp ./lib/machine-learning-models.jar /app/machine-learning-models.jar RUN bash gradlew shadowJar RUN cp ./build/libs/server-0.1-SNAPSHOT-all.jar /app/server.jar WORKDIR / RUN rm -rf /build EXPOSE 8000 ENTRYPOINT java -cp /app/machine-learning-models.jar:/app/server.jar com.company.Boot 谢谢你的帮助!

Maven安装文件在GitLab / Docker中无效:“无法parsing项目的依赖关系”

我试图在Docker中使用Maven在GitLab服务器上构build我的Java项目。 因为我使用第三方jar,我使用install-file插件在本地安装。 这在我的本地机器上似乎是成功的,就像在Docker上一样: $ mvn install:install-file -Dfile=lib/customArtifact-1.0.jar -DgroupId=customArtifact -DartifactId=customArtifact -Dversion=1.0 -Dpackaging=jar [INFO] Scanning for projects… [INFO] [INFO] ———————————————————————— [INFO] Building myProject 1.0-SNAPSHOT [INFO] ———————————————————————— [INFO] [INFO] — maven-install-plugin:2.4:install-file (default-cli) @ myProject — [INFO] Installing /builds/gitlab/myProject-groep/myProject/lib/customArtifact-1.0.jar to /root/.m2/repository/customArtifact/customArtifact/1.0/customArtifact-1.0.jar [INFO] Installing /tmp/mvninstall2011198835315637645.pom to /root/.m2/repository/customArtifact/customArtifact/1.0/customArtifact-1.0.pom [INFO] ———————————————————————— [INFO] BUILD SUCCESS [INFO] ———————————————————————— [INFO] Total time: 1.191 s [INFO] […]

如何在Docker中构build和运行Java实例

我正在努力学习Docker的方法。 我想为我的Java应用程序构build一个容器/图像。 Docker文件如下所示: FROM openjdk:7 COPY . C:/Users/name/Documents/NetBeansProjects/project1/src/mainpckg WORKDIR C:/Users/name/Documents/NetBeansProjects/project1/src/mainpckg RUN javac Main.java CMD java Main 我这样称呼它: docker build -t my-java-app . 但它给出了以下错误: $ docker build -t my-java-app . Sending build context to Docker daemon 3.072 kB Step 1 : FROM openjdk:7 —> 4a42f05dc422 Step 2 : COPY . C:/Users/name/Documents/NetBeansProjects/project1 /src/mainpckg —> Using cache —> […]

图像构build过程中的multithreading

我正在构build一个包含我的Java应用程序的自定义图像。 基本上我打电话mvn clean install在Dockerfile 。 我使用这个RUN mvn -T 1C clean install ,以加快进程。 这将使用每个可用的CPU核心1个线程。 这足够吗? mvn如何计算可用的cpu内核? 为了让它检查主机的CPU而不是虚拟机,我需要做些什么吗? 我使用Mac版的Docker(据我所知在内部使用xhyve)。 更新: 我正在构build一个模块(fat jar,使用tomcatembedded的spring引导应用程序),maven 3.3.9,大约30分钟的总持续时间没有线程提升。 巨大的开销是它在S3中从我的私人回购下载依赖。

芥末自动重启docker集装箱

我按照这里的指示安装了Wasabi: https : //github.com/intuit/wasabi 我的Wasabi运行在Google Cloud,Ubuntu 16.04上。 问题是,一段时间之后,Cassandra崩溃,不能自动重启。 当我去/api/v1/ping ,我得到这个: {"componentHealths":[{"componentName":"Experiments Cassandra","healthy":false,"detailedMessage":"PoolTimeoutException: [host=172.18.0.2(172.18.0.2):9160, latency=20000(20000), attempts=1]Timed out waiting for connection"},{"componentName":"MySql","healthy":true}],"version":"wasabi-api-1.0.20161107232436-SNAPSHOT-development-${scmBranch}-${buildNumber}-201701111439"} 崩溃时是否可以自动重启容器?

具有大量CPU使用的Docker Java 8容器

我们目前正在dockerize一个Java 8应用程序,我们有一个非常奇怪的行为。 在docker之外,应用程序使用不到10%的cpu,但是当我们将应用程序运行到一个容器中时,我们有100%的CPU使用率。 容器内部(使用docker exec -it [container-id] top ),jar只使用cpu的10%。 我们试图使用openjdk这样的其他基础docker镜像,但是它没有任何改变。 Docker文件: FROM anapsix/alpine-java:8 ADD . /producer WORKDIR /producer COPY ikb-1.0-SNAPSHOT-producer.jar ikb-1.0-SNAPSHOT-producer.jar COPY resources/ /resources/ CMD ["java", "-jar", "ikb-1.0-SNAPSHOT-producer.jar"] 我们用: Docker版本: 1.13.1,build 092cba3 Docker-compose版本: 1.11.2,build dfed245 服务器操作系统: CentOS

在Docker中构buildMaven项目时,所有目标文件都是根源的

我有一个Maven项目,我想在Docker容器中构build,这样我就不必在我的Jenkins系统上安装Java,Maven …。 我构build的Maven项目如下: docker run -it –rm -v /var/run/docker.sock:/var/run/docker.sock:ro -v $(pwd):/opt/maven -w /opt/maven maven mvn clean install 这工作很好,构build是正确的。 但是,以普通用户身份执行此操作时, target/目录中的所有文件都由root拥有,而不是由jester (目前用户)拥有。 有一个简单的方法来解决这个问题吗?

为什么使用ProcessBuilder运行docker会导致挂起?

我正尝试在使用Java的ProcessBuilder的docker容器中运行一个命令。 但是,它在等待退出代码时挂起。 这是为什么? ProcessBuilder processBuilder = new ProcessBuilder(Arrays.asList("/usr/bin/docker", "run", "base", "echo", "hello")); Process process = processBuilder.start(); // … Spin off another thread to collect stdout and stderr int exitCode = process.waitFor(); // <– HANG 我可以看到,该过程吐出正确的结果标准输出。 它永远不会返回退出代码。

Docker容器在AWS VPC中,好主意还是不好?

我想知道这是否是一个好主意? 我有一个几个Java服务,现在在aws vpc不同的框中运行。 最近我读了Docker,觉得它真的很棒。 所以我的问题是,如果这是一个好主意,用泊坞箱replace这些当前的箱子,并把我的Java服务上面呢? 当然还是在vpc中。 我能够想象的最大好处是可以节省我们在testing集成和debugging等方面所花费的工作量。 但是我担心类似的事情 性能损失(如果有的话)? networkingconfiguration? 服务状态监控? 我真的是docker工人的新手,所以请指点一下你认为可能有用的任何资源。

Docker或Vagrant会帮助我们为企业产品创buildtesting机器吗?

我正在开发一个企业级产品,主要有3件基于swing的客户端,DB,Server(现在我们可以忽略DB部分)。 作为企业产品客户端和服务器自带安装程序(它不像configurationApache或JBOSS和部署战争)。 我们将CIconfiguration为生成可安装的客户端和服务器的夜间操作系统特定版本。 因此,我们必须定期在特定的操作系统上testing这些构build,这需要在Y OS或X版本服务器上使用X版本客户端在Y OS上安装和创build系统的大量手动过程。 这是非常乏味的,因为我们都在窗户上,下一步 – >下一步 – >真的很烂(我已经创build了一个脚本,通过shell安装我们的产品,但它仍然是我认为可以自动化的步骤,但不怎么样)。 而且我们还需要一个隔离。 现在我正在考虑如何自动化创build这些testing机器的过程。 我刚开始探索Vagrant / Docker是否对我有帮助(在他们的概念下,仍然不了解Puppet / Chef),我很困惑应该采取哪种策略 通过vagrant创buildVM并在该框上运行我的安装脚本(这将需要每个客户端或每个服务器一个VM) 通过vagrant创build虚拟机,并运行我的客户端docker容器(我猜,这将需要一个虚拟机多个客户端或服务器,因为他们将在容器) 注意:我必须创buildVM,因为我们在window.e,通过vagrant或通过boot2docker 所以我的问题是 如果这两个策略是有效的而不是错误的,那么在这两个策略中,我应该采用两种策略之一吗? 我有没有什么不同的策略,或者我以正确的方式接近? 如果战略#2将被采用,那么我怎样才能创build我的客户端安装的容器/泊坞窗图像