Tag: Java

Docker构build在下载期间挂起

Mac 10.10.5在这里,使用docker-machine为我的本地Docker创build一个VirtualBox主机虚拟机。 我有一个项目,build立一个可执行的JVM位于build/libs/myapp-SNAPSHOT.jar 。 我的Dockerfile位于项目的根目录中,如下所示: FROM frolvlad/alpine-oraclejdk8:slim VOLUME /tmp ADD build/libs/myapp-SNAPSHOT.jar myapp.jar RUN sh -c 'touch /myapp.jar' ENTRYPOINT ["java","-jar","/myapp.jar"] 请注意,我不希望将我的图像推送到任何registry,只是保持/本地运行(现在)。 当我运行: docker build -t myorg/myapp . 我得到以下控制台输出: myuser@mymachine:~/sandbox/myapp$docker build -t myorg/myapp . Sending build context to Docker daemon 42.69 MB Step 1 : FROM frolvlad/alpine-oraclejdk8:slim slim: Pulling from frolvlad/alpine-oraclejdk8 d0ca440e8637: Downloading [=================================================> ] 2.295 MB/2.32 […]

Mavendockercaching依赖

我正在尝试使用docker来自动化maven构build。 我想构build的项目花费了将近20分钟的时间来下载所有的依赖关系,所以我尝试构build一个caching这些依赖关系的Docker镜像,但似乎并没有保存它。 我的Dockerfile是 FROM maven:alpine RUN mkdir -p /usr/src/app WORKDIR /usr/src/app ADD pom.xml /usr/src/app RUN mvn dependency:go-offline 图像生成,它下载一切。 但是,生成的图像与base maven:alpine图像大小相同,所以它似乎没有caching图像中的依赖关系。 当我尝试使用该图像进行mvn compile它会在整个20分钟的时间内重新下载所有内容。 是否有可能build立一个caching我的依赖的Maven图像,以便他们不必每次使用图像进行下载都要下载? 我正在运行以下命令: docker build -t my-maven . docker run -it –rm –name my-maven-project -v "$PWD":/usr/src/mymaven -w /usr/src/mymaven my-maven mvn compile 我的理解是,docker构build过程中的任何RUN成为结果图像的一部分。

如何使用Java连接到通过<HostVMIP>:2376监听ssl / tls连接的docker守护进程?

我有一个在VM中运行的docker守护进程,并通过HOST_VM_IP:2376监听来自外部世界的安全连接。 我已经根据docker文档https://docs.docker.com/engine/security/https/生成了ca.pem , cert.pem和key.pem ,并使用它们启动了docker守护进程。 我能够curl到VM端点:端口,以进行REST API调用。 我想使用ca.pem , cert.pem和key.pem并使用JAVA创build安全连接。 如何使用这3个文件在java中创build一个https客户端来进行其他api调用。 我想在UI中的文本框中指定这3个文件的内容,我将在运行时以编程方式检索! 谢谢!!

使用eirslett:frontend-maven-plugin在gitlab.com上运行maven

我有一个前端项目模块的maven项目,我用eirslett:frontend-maven-plugin包装。 它在当地工作正常,但在gitlab.com生成失败。 我用这个.gitlab-ci.yml启动构build: image: maven:3.3.9-jdk-8-onbuild build: script: "mvn clean install -B -X" 而这个pom.xml: <?xml version="1.0" encoding="UTF-8"?> <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>4.0.0</modelVersion> <groupId>fr.nev.oms</groupId> <artifactId>oms-frontend</artifactId> <packaging>jar</packaging> <parent> <groupId>fr.nev.oms</groupId> <artifactId>myproject</artifactId> <version>1.0.0-SNAPSHOT</version> </parent> <build> <plugins> <plugin> <groupId>com.github.eirslett</groupId> <artifactId>frontend-maven-plugin</artifactId> <version>1.3</version> <configuration> <!–<configuration>–> <nodeVersion>v4.4.7</nodeVersion> <npmVersion>3.10.5</npmVersion> <!–</configuration>–> <environmentVariables> <NODE_ENV>production</NODE_ENV> <API_URL></API_URL> <APP_VERSION></APP_VERSION> </environmentVariables> </configuration> <executions> <execution> <id>install node and npm</id> <goals> <goal>install-node-and-npm</goal> […]

Docker中的Java 9 ProcessHandle API:PID值和可见进程的差异

在简单的“Dockerized”Java程序中尝试使用Java 9中的新ProcessHandle API时,在检索正在运行的进程的进程ID时,我发现在行为方面存在差异。 特别是在调用方法ProcessHandle.pid() , Docker上生成的PID与主机上显示的本机ID不同 ,尽pipe文档说该方法“返回进程的本机进程ID”。 另外, ProcessHandle.allProcesses()的结果是有区别的。 为了演示,下面的程序执行以下操作: 打印当前进程的PID, 产生一个睡眠几秒钟的subprocess(以允许打印其信息), 最后打印所有可见的进程。 public static void main(String[] args) { System.out.println("### Current process info ###"); ProcessHandle currentProcess = ProcessHandle.current(); printInfo(currentProcess); System.out.println(); // Fork a child process that lasts for a few seconds spawnProcess("jshell –startup ./sleep.txt"); printAllVisibleProcesses(); } private static void printAllVisibleProcesses() { System.out.println("### Visible processes info […]

重新启动Play应用程序Docker容器导致“此应用程序已在运行” – RUNNING_PID不会被删除

编辑:有一个相关的问题在Github上讨论,但在另一种部署模式(Typesafe Activator UI而不是Docker)。 我试图模拟系统重新启动,以validationDocker重新启动策略,声明可以按正确的顺序重新运行容器。 我有一个用Java编写的Play框架应用程序。 Dockerfile看起来像这样: FROM ubuntu:14.04 # # [Java8, …] # RUN chmod +x /opt/bin/playapp CMD ["/bin/bash"] 我开始使用$ docker run –restart=always -d –name playappcontainer "./opt/bin/playapp" 。 当我$ service docker stop && service docker restart ,然后$ docker attach playappcontainer控制台告诉我: Play server process ID is 7 This application is already running (Or delete /opt/RUNNING_PID file) […]

在哪里把Dockerfile保存在一个项目中?

我正在获得关于Docker的知识,我有以下问题 Dockerfile在哪里保存在一个项目中? 他们和源头保持在一起吗? 他们是否在源头之外? 你有一个专门用于Dockerfile的Git仓库吗? 如果CI服务器应该为每个构build创build一个新的映像并在testing服务器上运行它,那么是否保留以前的映像? 我的意思是,你是否标记了以前的图像,或者在创build新图像之前删除了以前的图像? 我是一个Java EE开发人员,所以我使用Maven,Jenkins等。

在Docker容器中重新部署spring-boot应用程序?

我有一个春季启动项目,我想自动重新部署我的jar子在容器中。 如何正确地做到这一点? 到目前为止,我所看到的就是这样。 这是正确的方式? # cd /home/jdev; # sudo docker stop ca_spring_boot; # sudo docker rm ca_spring_boot; # sudo docker rmi ca_app_image; # sudo docker build -t ca_app_image .; # sudo docker run -d -p 8888:8080 –name ca_spring_boot ca_app_image 和我的Dockerfile FROM java:8 VOLUME /tmp EXPOSE 8080 ADD docker-storage/jenkins/workspace/CA/build/libs/ca-1.0.jar app.jar RUN bash -c 'touch /app.jar' ENTRYPOINT […]

如何设置Maven选项来运行发布或快照

我使用Jenkins服务器作为CI。 我正在使用maven docker来运行maven任务。 所以这是我的问题和我的疑惑。 与jenkins我使用maven插件来configuration和编译maven任务。 如果我想构build,我运行Build with Parameters ,如果我想创build一个快照或发行版,我运行Perform Maven Release ,在这里我可以指定版本。 但是由于我必须使用mvn命令的参数,因此docker更复杂。 所以: 如何设置选项来创build发行版或快照版本? 我有我的nexus url的settings.xml文件,也与用户/密码,但问题是与docker使用它。 我正在使用docker.io/maven图像。

连接到在Docker中运行的远程EJB模块

要部署和运行连接到在Docker容器中运行的Enterprise Server实例上的EJB模块的应用程序客户机,必须公开用于build立远程调用的端口。 哪些端口? 它们是固定的还是不同的? 我需要在Docker中configuration其他任何东西吗? 我正在使用Jboss 5.1.0作为企业服务器,我试图暴露端口1099和1100,在这两种情况下例外。 使用在我的主机上运行的Jboss相同的testing工作正常。