dockerdocker-composedocker-volumeportainer

Why is my Portainer Docker Compose creating a new volume


I installed Portainer via Docker Compose. I followed basic directions where I created a portainer_data docker volume: docker create volume portainer_data

Then I used the following Docker Compose file to setup portainer and portainer agent:

version: '3.3'
services:
    portainer-ce:
        ports:
            - '8000:8000'
            - '9443:9443'
        container_name: portainer
        restart: unless-stopped
        command: -H tcp://agent:9001 --tlsskipverify
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock
            - portainer_data:/data
        image: 'portainer/portainer-ce:latest'
    
    agent:
        container_name: agent
        image: portainer/agent:latest
        restart: unless-stopped
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
          - /var/lib/docker/volumes:/var/lib/docker/volumes
        ports:
          - "9001:9001"

volumes:
  portainer_data:

But then I see this inside Portainer when I look at the volumes: enter image description here

What is wrong in my configuration that it creates a new volume and ignores the one I setup?

Thanks.


Solution

  • docker by default prepends the project name to volume name, this is an expected behaviour https://forums.docker.com/t/docker-compose-prepends-directory-name-to-named-volumes/32835 to avoid this you have two options you can set project name when you run the docker-compose up or update the docker-compose.yml file to use the external volume you created

    version: '3.3'
    services:
        portainer-ce:
            ports:
                - '8000:8000'
                - '9443:9443'
            container_name: portainer
            restart: unless-stopped
            command: -H tcp://agent:9001 --tlsskipverify
            volumes:
                - /var/run/docker.sock:/var/run/docker.sock
                - portainer_data:/data
            image: 'portainer/portainer-ce:latest'
        
        agent:
            container_name: agent
            image: portainer/agent:latest
            restart: unless-stopped
            volumes:
              - /var/run/docker.sock:/var/run/docker.sock
              - /var/lib/docker/volumes:/var/lib/docker/volumes
            ports:
              - "9001:9001"
    
    volumes:
      portainer_data:
        name: portainer_data
        external: false