How to share data between host and containers using volumes in Docker Compose How to share data between host and containers using volumes in Docker Compose docker docker

How to share data between host and containers using volumes in Docker Compose


It looks like you are trying to define a "data container". This pattern used to be common, but this isn't necessary after the docker volume system was added in Docker 1.9 (https://github.com/docker/docker/blob/master/CHANGELOG.md#190-2015-11-03)

This image that you are using, tianon/true, is designed to run the "true" command, which does nothing other than return exit code 0, and then exit. This is why the container is showing as exited.

Instead of using data containers, use a named volume. For example, the following approach using a data container:

docker create --name data-container -v /sessions tianon/truedocker run --volume-from data-container -d myapp

becomes this:

docker volume create --name sessionsdocker run -v sessions:/sessions -d myapp

Since you are using compose, you can define volumes using the volumes key.

version: '2'services:    php-apache:        env_file:          - dev_variables.env        image: reypm/php55-dev        build:            context: .            args:                - PUID=1000                - PGID=1000        expose:            - "80"            - "9001"        extra_hosts:            # IMPORTANT: Replace with your Docker Host IP (will be appended to /etc/hosts)            - "dockerhost:xxx.xxx.xxx.xxx"        volumes:            - sessions:/sessions            - docroot:/var/wwwvolumes:    sessions:        driver: local    docroot:        driver: local

Full details and an example are located here: https://docs.docker.com/compose/compose-file/compose-file-v2/

However, you also mentioned wanting to share this volume data between the container and your host. In that case, neither a data container nor named volume is necessary. You can just specify a host volume directly:

version: '2'services:    php-apache:        env_file:          - dev_variables.env        image: reypm/php55-dev        build:            context: .            args:                - PUID=1000                - PGID=1000        expose:            - "80"            - "9001"        extra_hosts:            # IMPORTANT: Replace with your Docker Host IP (will be appended to /etc/hosts)            - "dockerhost:xxx.xxx.xxx.xxx"        volumes:            - ./data/sessions:/sessions            - ../:/var/www