Tag: maven

在Docker镜像中部署WAR文件的正确方法

docker容器中部署java项目的docker方式是什么? 我是否将战争复制到webapps中: FROM jetty:9.2.10 MAINTAINER Me "me@me.com" ADD ./target/*.war /var/lib/jetty/webapps/ROOT.war 或者我拿起爆炸的战争文件: FROM jetty:9.2.10 MAINTAINER Me "me@me.com" ADD ./target/app-0.1.0.BUILD-SNAPSHOT /var/lib/jetty/webapps/ROOT 通常情况下,如果它是一个普通的容器,但是使用docker,则会部署密封的war文件,这意味着每次进行小的更改时都会推送一个10-20MB的文件,而添加爆炸的war文件只会推动差别 – .class文件已经改变。 部署爆炸战争而不是战争文件有什么缺点吗?

在运行在Docker上的Java App中写入文件

背景 我正在尝试创build一个编译器Web服务,所以用户可以使用我编译的某种语言编写代码,然后编译,运行并返回打印结果。 我的第二个迭代涉及到使用Docker镜像来隔离正在运行的Web服务器中POST的代码的运行。 问题 我正在尝试将发布的代码写入一个文本文件来运行我的编译器,但是我的编译器在尝试创build文件时失败。 我的文件path应该是正确的,而我的其他testing路线正在工作。 这里是我试图运行一些演示代码,但失败: try (Writer writer = new BufferedWriter(new OutputStreamWriter( new FileOutputStream("/raw/compile-source.slacc"), "utf-8"))) { writer.write(req.body()); } 在我用来启动的Dockerfile中,我创build了/ raw目录。 我在想象Docker不希望Java进程创build任意文件。 有什么想法吗? 以下是我的Dockerfile。 我的Dockerfile FROM java:8 # Install maven RUN apt-get update RUN apt-get install -y maven WORKDIR /code # Prepare by downloading dependencies ADD pom.xml /code/pom.xml RUN ["mvn", "dependency:resolve"] RUN ["mvn", "verify"] […]

如何使用docker在AWS云中发布基于Java的Web应用程序

我们已经build立了Java Web应用程序,它提供了各种REST API ..我想有无痛的部署进度..这里是所需的场景.. 用户 – >负载平衡器 – > AS1,AS2,AS3 … 这里AS =应用程序服务器(EC2上的Tomcat)或者Docker实例(我更喜欢docker实例) 第一次期望的stream量: 开发人员激发maven并build立.war文件 我们可能会开发使用这个.war文件生成docker镜像的脚本。 执行将这个docker工人放在ELB后面的步骤 重新部署: 开发人员激发maven并build立.war文件 我们可能会开发使用这个.war文件生成docker镜像的脚本。 执行将这个docker工人拖到ELB后面的步骤并销毁前一个.. 我对DevOps很陌生,在上面的步骤中可能会犯一些错误。 所以请随时纠正我,并提供指导,以实现这一目标。 (如果这是重复的,请提供相关问题的链接) 提前致谢。

使用Docker开发Java EE应用程序

我将增加300点作为赏金 我最近开始仔细研究Docker,以及如何使用它来更快地获得团队的新成员,并使用开发环境运行,并将新版本的软件发布到生产环境中。 我有一些关于如何以及在什么阶段将Java EE应用程序添加到容器的问题。 正如我所看到的那样,有多种方式可以做到这一点。 这是Docker之前的典型工作stream程(在我的团队中): 开发者编写代码 开发人员使用产生WAR的Maven构build代码 开发人员在JBosspipe理控制台/或Maven插件中上传WAR 现在Docker出现之后,我对我是否应该创build需要的映像并对其进行configuration有点困惑,以至于在运行JBoss Wildfly容器时所做的所有事情是通过Web上的pipe理控制台部署应用程序。 或者我应该每次在Maven中构build应用程序时创build一个新的容器,并将其ADD到Dockerfile中的ADD命令中,然后运行该容器,而不需要在启动后部署它? 在生产中,我猜最后的方法是什么它的优点? 纠正我,如果我错了。 但是在发展中应该怎么做呢? 还有其他工作stream程吗?

无法使用JDBC连接到mySql docker容器

我使用Docker Maven插件 当testing集成开始时,我可以通过以下命令在terminal的容器上连接到mysql: mysql -h 127.0.0.1 -P 32795 -uroot -p 和万物运作良好,但是当我想连接在Java应用程序的JDBC与JDBC与这个代码: Class.forName("com.mysql.jdbc.Driver").newInstance(); Connection connection = DriverManager.getConnection( "jdbc:mysql://127.0.0.1:" + System.getProperty("mysqlPort") + "/dashboardmanager", "root", "root" ); 我得到这个错误: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Cannot create PoolableConnectionFactory (Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver […]

澄清Mavenconfiguration文件和阶段

在我的maven项目中,我有多个mavenconfiguration文件。 在每个configuration文件中,我有docker-maven-plugin和maven-failsafe-plugin 。 这是我如何约束目标和阶段。 泊坞窗- Maven的插件 <phase>pre-integration-test</phase> <goals> <goal>start</goal> </goals> <phase>post-integration-test</phase> <goals> <goal>stop</goal> <goal>remove</goal> </goals> Maven的故障保护,插件 <phase>integration-test</phase> <goals> <goal>integration-test</goal> </goals> <phase>verify</phase> <goals> <goal>verify</goal> </goals> 我有每个数据库types的configuration文件(即MySQL,Postgres等)。 我想要做的是在docker上运行我的集成testing与每个数据库types。 我的问题是,我可以运行mvn多个configuration文件(即mvn clean install -P local-postgres,local-mysql ),以便每个configuration文件一个接一个地执行? 我的要求是不要同时有2个docker集装箱。 我所观察到的是,所有configuration文件的pre-integration-test阶段都是先运行的,并且以The name "/apim-postgres" is already in use by container xxxxx失败。 当多个configuration文件被给出时,maven阶段应该如何工作? 有没有办法让我的要求得到满足?

docker-maven插件尝试构build图像时发生了什么?

我正在docker容器中运行Jenkins,Jenkins试图运行我的Maven构build。 作为构build的一部分,docker maven插件指示它构build一个docker镜像。 POM的那部分在下面。 <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.3.8</version> <configuration> <imageName>example</imageName> <baseImage>java:latest</baseImage> <skipDockerBuild>false</skipDockerBuild> <cmd>["java", "-jar", "myLogThread-jar-with-dependencies.jar"]</cmd> <resources> <resource> <directory>target/</directory> <include>config.properties</include> </resource> <resource> <directory>${project.build.directory}</directory> <include>myLogThread-jar-with-dependencies.jar</include> </resource> </resources> </configuration> </plugin> maven构build运行,直到它试图build立图像,在这一点下面的错误消息吐出: [INFO] Building image example [INFO] I/O exception (java.io.IOException) caught when processing request to {}->unix://localhost:80: Permission denied 我可以进入正确的目录和Dockerfile在那里。 我也可以运行sudo docker build . 它会build立没有问题的形象。 为什么Maven构build失败? 对localhost有什么要求:80? 我怎样才能纠正这个问题,让maven可以build立我的形象? 注意:我在这个容器中安装了docker socket和binary

docker工的春季启动无法find有效的证书path来请求目标错误

我正在使用spring引导,并试图用Docker进行设置。 我尝试了一切,我可以find谷歌,似乎没有让我去。 我在跑 mvn clean package docker:build 运行这个命令将执行spring-boottesting,运行数据库迁移,构buildJAR,然后在构buildDocker镜像时出现以下错误: Failed to execute goal com.spotify:docker-maven-plugin:0.4.9:build (default-cli) on project app: Exception caught: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target -> [Help 1] 这里是我使用的Dockerfile: FROM java:8-jdk export DOCKER_TLS_VERIFY="1" export DOCKER_HOST="tcp://192.168.99.100:2376" export DOCKER_CERT_PATH="/Users/james/.docker/machine/machines/default" export DOCKER_MACHINE_NAME="default" EXPOSE 8080 VOLUME /tmp […]

使用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> […]

maven package docker:构build – 连接被拒绝

我正在尝试用mvn package docker:build构build一个maven的mvn package docker:build 。 Docker正在运行, docker ps向我展示了我的容器,所以我假定一切正常运行。 我确实收到以下错误: [错误]无法执行目标com.spotify:docker-maven-plugin:0.2.3:build(default-cli)on project reservier:Exception caught:java.util.concurrent.ExecutionException:com.spotify.docker.client。 shaded.javax.ws.rs.ProcessingException:o rg.apache.http.conn.HttpHostConnectException:连接到本地主机:2375 [localhost / 127.0.0.1,localhost / 0:0:0:0:0:0:0:1 ]失败:连接被拒绝:连接 – > 我的第一个方法是,因为我在窗口上工作,我需要调用docker机IP地址而不是本地主机,但也没有工作。 我有点不知所措,因为我认为这很简单,我做错了,但是当docker(貌似)运行正常的时候,我找不到连接拒绝的错误。 如果这是微不足道的,我很抱歉。