Tag: Java

Bash脚本的行为不同于Docker的运行命令,而不是容器本身?

我在Ubuntu 12.0.4 LTS上运行Docker 1.0.1客户端。 我有一个以服务器模式运行Java应用程序的容器。 在启动服务器的容器中有一个Bash脚本。 如果我从容器的内部执行bash脚本,Java应用程序运行良好。 如果我将bash脚本追加到Docker运行命令的末尾,并尝试以这种方式启动它,那么运行将失败。 检查日志我看到一个错误,指示Java应用程序的主类无法find。 这是命令行: $> sudo docker run -p 1566:1566 -d $USER/server /server_install/run-server.sh 如果我从命令行中删除/server_install/run-server.sh ,容器启动正常,并保持常驻状态。 但是通过命令行中的脚本文件,容器终止,并且日志显示错误消息,指示找不到主Java类。 但是,如果我input容器并从/ server_install目录启动run-server.sh , 它工作正常 。 path的行为与容器的Bash shell的行为是不一样的,那么当你从命令行启动某些东西的时候,path的行为是不同的? 或者我必须在执行Bash脚本之前将当前工作目录更改为/ server_install 。 如果是的话,我该怎么做? 这似乎有点奇怪,因为run-server.sh脚本在其中设置了Javapath选项。

Docker中持久化Java应用服务器configuration文件

我想创buildDocker容器并在其上安装各种Java应用服务器,如Wildfly,Oracle Weblogic和IBM Websphere。 这些服务器应该是可configuration的:创build数据源和部署各种JavaEE应用程序应该对用户可用,但是,当Docker容器完成时,没有办法恢复部署的应用程序和configuration的服务器。 通过使用纯数据容器迁移此问题是一项艰巨的任务,因为每个应用程序服务器具有不同的复杂目录结构,并且不知道持久数据的位置。 我的用例不适用于Docker,不应该以这种方式使用吗? 如果不是,我怎么能达到所需的function?

Docker上的Ambari-Server服务器Java安装问题

今天我遇到了Ambari-Server安装在一个几乎空白的系统上的问题: [root@<server>/]# ambari-server setup Using python /usr/bin/python2.6 Setup ambari-server Checking SELinux… SELinux status is 'disabled' Customize user account for ambari-server daemon [y/n] (n)? Adjusting ambari-server permissions and ownership… Checking firewall status… FATAL: Could not load /lib/modules/2.6.32-504.16.2.el6.x86_64/modules.dep: No such file or directory iptables v1.4.7: can't initialize iptables table 'filter': Permission denied (you must be root) Perhaps […]

生成PDF PDFBox无头泊坞窗容器失败

我正在使用pdfbox在Java中创buildpdf。 从我的Mac作为普通的Java应用程序运行时,这工作正常。 然而,用例是从服务器端运行这个从Web浏览器生成PDF。 我已经将应用程序部署到docker容器,现在无法工作(加载字体时的各种错误 – arrayindexoutofbounds,eofexception等)。 这似乎是由于pdfbox在java.awt.headless模式下运行的方式,因为当我输出在Mac上运行的模式时,它将为无头模式返回false,而在服务器上返回true。 我在代码中明确地设置了java.awt.headless=fals e设置,现在又出现了一些其他的错误。 缺less与X服务器等有关的图书馆我已经安装了这些,但现在有错误: java.awt.AWTError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable. 围绕SO等有一些build议,例如设置DISPLAY =:0.0等,但这些都没有工作。 在Docker容器中运行显然有些复杂,但任何人都可以在这里提出一些build议吗? 我猜测使用虚拟xserver是答案,但我很难设置这个,然后设置适当的xsessionAuthoriy / DISPLAY /等

使用JVisualVM监控Docker上的Glassfish 4

我无法将JVisualVM连接到在Docker上运行的Glassfish。 我正在使用玻璃鱼夜间图像 ,我正在暴露端口8686.在启动Glassfish正在logging以下内容: JMXStartupService has started JMXConnector on JMXService URL service:jmx:rmi://55bbdd404578:8686/jndi/rmi://55bbdd404578:8686/jmxrmi 我的docker主机的IP是192.168.99.100,我可以通过端口8686的telnet连接。 我使用的服务URL是service:jmx:rmi://192.168.99.100:8686/jndi/rmi://192.168.99.100:8686/jmxrmi ,我传递安全凭证,但无法连接。 我错过了什么吗?

将Java应用程序部署到Docker镜像

我有一个正常执行的可执行JAR,如下所示: java -jar myapp.jar 我想“ Dockerize ”这个应用程序,把它放在一个容器中,比如/~/myapp ,然后configuration容器,当容器启动时总是运行这个应用程序(使用上面的命令)。 使用这个示例Dockerfile作为起点,我需要添加哪些条目才能让Docker将myapp.jar正确定位到文件系统中,并在启动时运行它? 假设在我运行Docker构build镜像时,二进制文件将位于build/distributions如下所示: myapp/ src/ build.gradle Dockerfile build/distributions/ myapp.jar

为webappconfigurationDocker的最佳方法是什么?

我想configuration一个Docker容器来运行使用Postgres和Jetty的Java应用程序。 什么是最好的方法来做到这一点: 从Docker集线器中拉出三个独立的容器,并以某种方式将它们一起使用。 使用所有configuration从头创build一个Dockerfile。 从Docker集线器中拖出三个镜像,并手动从它们中创build一个Dockerfile。

docker上的黄瓜testing不会在整合testing阶段触发

我有一些问题让我的黄瓜/ phantomJstesting运行对docker集装箱。 我的计划是在maven预集成testing阶段启动tomcat docker容器。 然后在整合testing阶段,我想运行黄瓜testing。 为此,我已经禁用了surefire插件来运行testing阶段,并包含故障安全插件。 尽pipe一些如何整合testing阶段什么都不做。 我不知道什么是错的。 docker容器工作正常,并在预集成testing阶段开始。 他们也停止在整合后testing阶段。 战争部署和运行就像运行。 那里没有问题。 当validation插件启用testing时,黄瓜testing运行在testing阶段。 在示例项目中,您可以通过在tofire的插件部分编辑pom来更改此项目 <configuration> <skip>true</skip> </configuration> 我已经在https://github.com/abroer/cucumber-integration-test.git创build了一个示例项目 该项目可以使用mvn clean verify来运行 有关如何在maven整合testing阶段启动黄瓜testing的build议。

春季启动docker插件需要每次删除图像

我创build了一个基本的spring启动应用程序,我正在使用docker-maven-plugin来构builddocker镜像。 每当我改变应用程序,我必须删除容器,并再次启动。 docker rm -f <container-name> docker run -p 8080:8080 -d <IMAGE> –name some-app 有什么方法可以重新启动容器,新的更改生效。 这是我的pom文件中的docker插件。 <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.2.3</version> <configuration> <imageName>${docker.image.prefix}/${project.artifactId}</imageName> <dockerDirectory>src/main/docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> Dockerfile FROM java:8 VOLUME /tmp ADD demo-0.0.2-SNAPSHOT.jar basic-boot-app.jar RUN bash -c 'touch /basic-boot-app.jar' ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/basic-boot-app.jar"]

Tomcat的Spring应用程序属性与docker容器链接

我一直在玩docker。 我有我的MySQL容器 docker run –name mymysql -d mysql / mysql-server:5.6 我的应用程序部署在我的Tomcat容器 docker运行 – 链接mymysql:mysql -d我的tomcat 在tomcat容器中,我可以看到(因为链接) .. MYTOMCAT_PORT_8080_TCP_ADDR=172.17.0.55 .. and in the /etc/hosts 172.17.0.55 mysql 在我的Spring应用程序中,我用这种方式pipe理属性 class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:${env}/myapp.properties</value> </list> </property> </bean> 其中取决于configuration(propvariables在tomcat的JAVA_OPTS中设置-Denv = qa) 在qa / myapp.properties我有例如mysql链接 databaseUrl=jdbc:mysql://mysql:3306/mydb “mysql”是mysql docker镜像的名称,和tomcat容器的/ etc / hosts中的一样 我想知道如果我处理的东西的方式被认为是良好的做法? 有一个更容易/更聪明的方式来处理属性? 事实上,我的Java应用程序与我的docker的图像的名称强烈联系在一起。 我想有一种运行在tomcat容器上的脚本,它使用/ etc / hosts值的ENVvariables(MYTOMCAT_PORT_8080_TCP_ADDR)即时生成最终的may.properties。 这是一个更好的解决scheme吗?