使用docker tomcat与外部WAR



我一直在研究tomcat在docker上的最佳实践以及如何链接WAR文件。

遇到的两种方法是:

  1. 扩展tomcat基本映像,并将WAR文件复制到/webapps,然后重新构建该映像。
  2. 使用两个容器,第一个是tomcat,第二个是数据容器,例如busybox,其中包含WAR文件。然后将busybox容器挂载到/webapps上的tomcat容器上,WAR文件将被有效地拾取。

我喜欢第二种方法的声音,但是我一直无法成功地让它工作。

我尝试使用busybox创建一个数据容器,然后使用docker compose启动服务。WAR不会被复制,并且busybox容器会立即停止运行。

Dockerfile:

FROM busybox
RUN mkdir /webapps
COPY ./demo.war /webapps/demo.war
VOLUME ['/webapps']

docker-compose.yml

version: '2'
services:
  data:
    image: <Data Container Image>
  tomcat:
    image: tomcat:8.5.4-jre8
    volumes_from:
      - data
    ports:
      - "678:8080"

运行docker-compose up后,WAR文件没有被复制,busybox容器立即退出。

感谢您的帮助。

数据容器根据定义退出,即它的DNA。

您需要将其作为卷公开或使用

version: '2'
services:
  data:
    image: <Data Container Image>
    volumes:
      - webapps:/webapps
  tomcat:
    image: tomcat:8.5.4-jre8
    volumes:
      - webapps:/webapps
    ports:
      - "678:8080"
volumes:
  webapps:
    driver: local

还请注意,我没有使用volumes_from,而是使用了volumes,因为volumes_from与我认为在docker 1.11中引入的"volumes"的使用相当不一致

提示:调整tomcat容器中的挂载路径,可能是/usr/local/tomcat/webapps

最新更新