Docker:写入链接容器的磁盘

Docker:写入链接容器的磁盘,docker,networking,docker-compose,dockerfile,Docker,Networking,Docker Compose,Dockerfile,我有一个Docker容器,它运行一个简单的web应用程序。Docker Compose使用以下Docker-Compose.yml文件将该容器链接到另外两个容器: version: '2' services: mongo_service: image: mongo command: mongod ports: - '27017:27017' tomcat_service: image: 'bitnami/tomcat:latest'

我有一个Docker容器,它运行一个简单的web应用程序。Docker Compose使用以下Docker-Compose.yml文件将该容器链接到另外两个容器:

version: '2'

services:
  mongo_service:
    image: mongo
    command: mongod
    ports:
      - '27017:27017'

  tomcat_service:
    image: 'bitnami/tomcat:latest'
    ports:
      - '8080:8080'

  web:
    # gain access to linked containers
    links:
      - mongo_service
      - tomcat_service
    # explicitly declare service dependencies
    depends_on:
      - mongo_service
      - tomcat_service
    # set environment variables
    environment:
      PYTHONUNBUFFERED: 'true'
    # use the image from the Dockerfile in the cwd
    build: .
    ports:
      - '8000:8000'
一旦
web
容器启动,我想将一些内容写入
tomcat\u服务
容器上的
/bitnami/tomcat/data/
。我尝试从
web
容器中写入该磁盘位置,但遇到异常:

没有这样的文件或目录:'/bitnami/tomcat/data/'


有人知道我能做些什么才能从
web
容器写入
tomcat\u服务
容器吗?如果其他人能就这个问题提供任何建议,我将不胜感激

如果希望一个服务写入另一个服务,则必须使用docker卷。如果web写入someFolderName,tomcat_服务中将存在相同的文件

version: '2'

services:

  tomcat_service:
    image: 'bitnami/tomcat:latest'
    volumes:
      - my_shared_data:/bitnami/tomcat/data/

  web:
    volumes:
      - my_shared_data:/someFolderName

volumes:
  my_shared_data:

中的数据将保持不变,即使下次重新创建docker容器,这些数据也将可用。在docker容器中写入数据时,应始终使用docker卷。

为什么要从一个容器写入另一个容器?@jrtapsell我基本上想将.war文件加载到我的tomcat容器中。war文件是在
web
容器中以编程方式生成的。我应该在
web
容器中构建tomcat吗?我喜欢通过compose创建的独立容器的清洁度,但这可能不可行。您可以使用多阶段构建来创建战争,然后使用它创建一个tomcat映像,并将其构建为不美观的,非常感谢您的注释;我想这些书可能会有帮助,但你已经说得更清楚了。只需检查:如果我在
web
中触摸/someFolderName/success.json,
tomcat
是否能够读取
/bitnami/tomcat/data/success.json
?是的,您也可以装载卷,仅用于使用
我的共享数据:/bitnami/tomcat/data/:ro
读取tomcat