如何使用docker compose

时间:2018-01-17 11:22:15

标签: docker docker-compose dockerfile

我正在使用Docker Compose进行多容器应用程序我有两个docker文件,一个用于tomcat,一个用于ant第一个tomcat docker文件构建成功,当ant docker-file构建我的应用程序时,它需要tomcat / lib文件夹和tomcat / webapps中 它存在于另一个容器中,以便我如何获取tomcat容器中的tomcat文件夹存在于ant容器中,以便我的应用程序能够成功构建

现在我收到错误

未找到tomcat / lib ...

我的docker-compose.yml:

version: '3'     
services:   
  ant:   
    build:         
      context: "."   
      dockerfile: dockerfile_ant      
    container_name: ant-container      
    volumes:
      - ant:/usr/local/tomcat:ro      
    links:
      - tomcat
    ports:
      - "8080:8080"      
  tomcat:    
    build:    
      context: "."
      dockerfile: dockerfile_tomcat    
    container_name: tomcat-container    
    volumes:     
      - ant:/usr/local/tomcat:rw          
    expose:   
      - 80   

volumes:   
  ant:      

我的dockerfile_ant:

FROM openjdk:6

MAINTAINER shri

ENV ANT_HOME /usr/local/ant   
ENV PATH ${PATH}:/usr/local/ant/bin    
ENV ANT_OPTS=-Dfile.encoding=cp1252    

ADD apache-ant-1.7.0 /usr/local/ant

ADD TemplateUI /usr/local/TemplateUI

WORKDIR /usr/local/TemplateUI    
ENV JAVA_TOOL_OPTIONS=-Dfile.encoding=cp1252

RUN ant  

我的dockerfile_tomcat:

FROM tomcat:6

ENV CATALINA_HOME /usr/local/tomcat  
ENV PATH $CATALINA_HOME/bin:$PATH  

RUN mkdir -p "$CATALINA_HOME"  

VOLUME ant

WORKDIR /usr/local/tomcat   

EXPOSE 8009

请指导我们使用docker compose运行多容器应用程序的方式。

由于 shriyash

2 个答案:

答案 0 :(得分:0)

您可以在撰写文件&中定义命名卷。通过在每个容器的撰写文件的volume部分中添加这些卷名来跨多个容器共享它。

参考 - https://docs.docker.com/compose/compose-file/#volumes

示例(logs卷在多个容器之间共享) -

version: '3.2'

services:

  lr:
    build:
      context: ./docker-build
      dockerfile: Dockerfile.lr
    restart: always
    volumes:
      - logs:/rest/logs/

  redis:
    image: redis:alpine
    volumes:
      - data:/data
      - logs:/rest/logs/

volumes:
  logs:
  data:

或者,您也可以托管绑定/装载卷,但尽量不要使用它们(host-bind-volumes)。

答案 1 :(得分:0)

这是docker-compose.yml: -

version: '3.2'   
services:    
  ant:   
    build:        
      context: "."   
      dockerfile: dockerfile_ant  
    container_name: ant-container  
    links:  
     - tomcat   
    volumes:  
      - ant:/usr/local/tomcat:rw     
    ports:  
      - "8080:8080"        
  tomcat:   
    build:    
      context: "."  
      dockerfile: dockerfile_tomcat   
    container_name: tomcat-container   
    restart: always   
    volumes:   
      - ant:/usr/local/tomcat:rw   
    expose:   
      - 80   
volumes:     
  ant: {}  

并且无需在ant-dockerfile和tomcat-dockerfile

中指定卷