用activemq添加camunda -bpm-wildfly并运行在相同的docker容器中
我想添加与活动mq camunda-bpm-wildfly并运行在相同的docker容器中。
首先,我将它们添加到两个容器,并尝试运行如下。 还可以。
1.运行camunda-bpm-wildfly。
Dockerfile:
FROM camunda/camunda-bpm-platform:wildfly-latest ADD standalone.xml standalone/configuration/ ADD bin/ bin/ ADD fusepatch/ fusepatch/ ADD modules/ modules/ ADD hawtio-wildfly-1.5.3.war standalone/deployments/
命令:
docker build my-wildfly . docker images sudo docker run -d --name my-wildfly --net="host" -p 7070:7070 my-wildfly
2.运行activemq。
Dockerfile:
FROM webcenter/activemq:latest
命令:
docker build amq-alone . docker images docker run --name='amq-alone' -d -p 8161:8161 -p 61616:61616 -p 61613:61613 amq-alone
然后,我search了一种方法来添加两个图像到同一个容器,并指出,我们不能添加多个图像到同一个容器[参考: docker – 容器与多个图像 。
然后我downlaoded activemq,我试图扩展它如下。 它build立正确,当我运行也正确运行。 但是只有wildfly运行在7070端口而不是activemq。
Dockerfile:
FROM camunda/camunda-bpm-platform:wildfly-latest ADD standalone.xml standalone/configuration/ ADD bin/ bin/ ADD fusepatch/ fusepatch/ ADD modules/ modules/ ADD hawtio-wildfly-1.5.3.war standalone/deployments/ ADD apache-activemq-5.15.2/ apache-activemq-5.15.2/ RUN apache-activemq-5.15.2/bin/activemq start
命令:
docker build my-wildfly-amq . docker images sudo docker run -d --name my-wildfly-amq --net="host" -p 7070:7070 -p 8161:8161 -p 61616:61616 -p 61613:61613 my-wildfly-amq
日志:
me@my-pc:~/$ docker build -t=my-wildfly-amq . Sending build context to Docker daemon 375.8MB Step 1/8 : FROM camunda/camunda-bpm-platform:wildfly-latest ---> 274d119b1660 Step 2/8 : ADD standalone.xml standalone/configuration/ ---> Using cache ---> 41c2f6d423ec Step 3/8 : ADD bin/ bin/ ---> Using cache ---> 27c1952f442e Step 4/8 : ADD fusepatch/ fusepatch/ ---> Using cache ---> 66419d22d6b7 Step 5/8 : ADD modules/ modules/ ---> bbdee5ab8ea2 Step 6/8 : ADD hawtio-wildfly-1.5.3.war standalone/deployments/ ---> 237821cdb2c8 Step 7/8 : ADD apache-activemq-5.15.2/ apache-activemq-5.15.2/ ---> 309b552b5150 Step 8/8 : RUN apache-activemq-5.15.2/bin/activemq start ---> Running in ce0e55cfd13b INFO: Loading '/camunda/apache-activemq-5.15.2//bin/env' INFO: Using java '/usr/bin/java' INFO: Starting - inspect logfiles specified in logging.properties and log4j.properties to get details INFO: pidfile created : '/camunda/apache-activemq-5.15.2//data/activemq.pid' (pid '46') ---> f903dc0b2db5 Removing intermediate container ce0e55cfd13b Successfully built f903dc0b2db5 Successfully tagged my-wildfly-amq:latest
我在这里错过了什么? 如何添加在相同的docker容器中运行的camunda-bpm-wildfly活动mq?
更新#1:用@bluescore的答案我试图使用CMD如下,它的工作。 activemq和wildfly都启动了。 但是有一个问题在那里。 通常当我们开始camunda -bpm-wildfly时,我们调用start-camunda.sh(不是wildfly bin / standalone.sh)。 但是在这里我也不能在-ti模式下看到这个文件。 如何开始Camunda的形象开始自己? (我检查了dockerhub和github也找不到提示)
Dockerfile:
FROM camunda/camunda-bpm-platform:wildfly-latest ADD standalone.xml standalone/configuration/ ADD bin/ bin/ ADD fusepatch/ fusepatch/ ADD modules/ modules/ ADD hawtio-wildfly-1.5.3.war standalone/deployments/ ADD apache-activemq-5.15.2/ apache-activemq-5.15.2/ ADD my-wildfly-amq.sh my-wildfly-amq.sh CMD bash my-wildfly-amq.sh
my-wildfly-amq.sh
apache-activemq-5.15.2/bin/activemq start bin/standalone.sh
- Docker版本17.09.0-ce
- Ubuntu 16.04
你误解了RUN的工作原理。 使用ENTRYPOINT或CMD脚本代替扩展容器的最终运行命令。 RUN在构build期间执行命令,而不是在docker run
期间docker run
。 CMD和ENTRYPOINT告诉容器在实际运行时要执行什么。
查看您正在使用的camunda-bpm-platform映像的Dockerfile。 注意,CMD在最后执行一个shell脚本。
如果你想同时运行ActiveMQ和wildfly,你应该编写一个运行它们的shell脚本,然后用CMD或ENTRYPOINTreplace你的最终的RUN来执行这个脚本。 就像是:
CMD ["/usr/local/bin/your_script.sh"]
当您的容器启动docker run
,此脚本将运行。