我正在使用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
答案 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
中指定卷