使用docker tomcat和外部WAR

时间:2016-08-30 14:22:08

标签: tomcat docker docker-compose

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

遇到的两种方法是:

  1. 扩展基本tomcat映像并将WAR文件复制到/webapps,然后将该映像重建为您自己的映像。
  2. 使用两个容器,第一个是裸tomcat,第二个是数据容器,例如busybox,容器是WAR文件。然后,您可以在/webapps的tomcat容器上安装busybox容器,并且可以有效地获取WAR文件。
  3. 我喜欢第二种方法的声音,但是我无法成功地将其发挥作用。

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

    数据容器Dockerfile:

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

    搬运工-compose.yml

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

    不会复制WAR文件,并且在运行docker-compose up后,busybox容器会立即退出。

    任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

数据容器按定义退出,即其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,而是使用卷,因为使用“volume”来使用volumes_from而不推荐使用我认为引入了docker 1.11

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