mikazz
mikazz

Reputation: 179

Creating shared directory between containers with docker-compose

My Flask app (webapp) has two directories inside (uploads and images). I want my second container (rq-worker) to have access to them, so it can take something from uploads, and save back to images. How I can organize this inside my docker-compose.yml?

version: '3.5'

services:

  web:
    build: ./webapp
    image: webapp
    container_name: webapp
    ports:
      - "5000:5000"
    depends_on:
      - redis-server
      - mongodb

  redis-server:
    image: redis:alpine
    container_name: redis-server
    ports:
      - 6379:6379

  mongodb:
    image: mongo:4.2-bionic
    container_name: mongodb
    ports:
      - "27017:27017"

  rq-worker:
    image: jaredv/rq-docker:0.0.2
    container_name: rq-worker
    command: rq worker -u redis://redis-server:6379 high normal low
    deploy:
      replicas: 1
    depends_on:
      - redis-server

  dashboard:
    build: ./dashboard
    image: dashboard
    container_name: dashboard
    ports:
      - "9181:9181"
    command: rq-dashboard -H redis-server
    depends_on:
      - redis-server

Upvotes: 0

Views: 526

Answers (1)

yvesonline
yvesonline

Reputation: 4847

You'll need to specify a volume like this:

volumes:
  data-volume:

And then attach it to your services, e.g. for web:

  web:
    build: ./webapp
    image: webapp
    container_name: webapp
    ports:
      - "5000:5000"
    depends_on:
      - redis-server
      - mongodb
    volumes:
      - data-volume:/my/mnt/point

The documentation has more info, also how to configure a volume driver, e.g. if you want to have a volume on NFS. Furthermore this lists available volume plugins which enable Docker volumes to persist across multiple Docker hosts.

Upvotes: 1

Related Questions