Docker: Write to disk of linked container

2019-08-08 02:11发布

问题:

I have a Docker container that runs a simple web application. That container is linked to two other containers by Docker Compose with the following docker-compose.yml file:

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'

Once the web container starts, I want to write some content to /bitnami/tomcat/data/ on the tomcat_service container. I tried just writing to that disk location from within the web container but am getting an exception:

No such file or directory: '/bitnami/tomcat/data/'

Does anyone know what I can do to be able to write to the tomcat_service container from the web container? I'd be very grateful for any advice others can offer on this question!

回答1:

you have to use docker volumes if you want one service to write to other service. If web writes to someFolderName the same file will exist in the tomcat_service.

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:

Data in volumes persist and they will be available even next time you re-create docker containers. You should always use docker volumes when writing some data in docker containers.