How can I make actual image files persistent in file upload process running with docker?

Recently I have developed an application running with docker in PHP including file upload process.

However, actual uploaded files to the server would have been lost when the container exits.

  • How do I get the external hosts ip address from inside a docker container
  • CoreOS & HDFS - Running a distributed file system in Linux Containers/Docker
  • Create mongodb container w default data
  • Rails scaffolding with docker and file ownership
  • Installing Docker with script on Windows
  • Docker container vs Java Virtual Machine
  • How did you deal with the matter?
    Please tell me how to make files persistent.

    For example:

    • Using external server like S3 for storing files.
    • Utilizing Docker storage functions for volumes.

  • Start only one service in a docker-compose.yml with ansible docker_service module
  • Unable to run shell command with docker?
  • Docker: Multiple MySQL instances/containers - second slave time out
  • Docker compose using environment variables to set extra host
  • Nginx as reverse proxy for docker containers
  • Running a script from a mongodb docker-container
  • One Solution collect form web for “How can I make actual image files persistent in file upload process running with docker?”

    This can be done using docker compose. You will be able to access the files inside container by mounting them to external host directory. The files uploaded to wordpress are stored in wp-content/uploads and you can mount this using this sample docker-compose file:

    version: '3'
    services:
      mysql-database:
        image: mysql
        container_name: mysql-database
        volumes:
          - ./mysql/docker-entrypoint-initdb.d/:/docker-entrypoint-initdb.d
        ports:
          - 3306:3306
    
      wordpress-sites:
        image: wordpress:custom
        build:
          context: ./wordpress
          dockerfile: wordpress.dockerfile
        container_name: wordpress-sites
        links:
          - mysql-database
        depends_on:
          - mysql-database
        ports:
          - 8080:80
        volumes:
          - ./wordpress/wp-content:/var/www/html/wp-content
    

    The documentation regarding volumes should be able to help you.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.