作为练习,我试图设置三个Docker容器。
container1
(作为纯存储卷)container2
(Java应用程序)container3
(作为纯存储卷)现在,在container2
上运行的Java应用程序(使用Apache Camel)应该侦听container1
卷上的文件添加并将它们传输到container3
卷上。
我当时正在考虑在存储容器上安装FTP映像,但是我认为它们的卷可以暴露。
此用例的更好方法是什么?
答案 0 :(得分:0)
您只需添加指向同一目录的卷即可:
容器2可以有3个卷:
您的Java应用程序可以简单地用批处理检查第2卷的文件夹,并将文件放在第3卷的文件夹中
答案 1 :(得分:0)
是的,你是对的。它们的数量可以被公开,这并不难实现。例如,您可以尝试运行下一个准备好的docker-file:
#########################################################################
version: '3.3'
services:
#########################################################################
container-1:
container_name: "test-container1"
image: ubuntu:16.04
volumes:
- "$HOME/data/container-1:/root/data"
command: ["/bin/bash", "-c", "echo 'Hello world!' > \
/root/data/someFileFromContainer-1"]
#########################################################################
container-2:
container_name: "test-container2"
image: ubuntu:16.04
depends_on:
- container-1
volumes:
- "$HOME/data:/root/data"
command: ["/bin/bash", "-c", "/bin/sleep 3s && \
mv /root/data/container-1/someFileFromContainer-1 /root/data/container-3/"]
#########################################################################
container-3:
container_name: "test-container3"
image: ubuntu:16.04
volumes:
- "$HOME/data/container-3:/root/data"
depends_on:
- container-2
command: ["/bin/bash", "-c", "sleep 5s && \
cat /root/data/someFileFromContainer-1"]
#########################################################################
尝试执行以查看结果(来自第一个容器/“ Hello world!”中创建的文件中的数据):
docker-compose up -d && docker logs -f test-container3