selfhosted-apps-docker/portainer/readme.md

2.5 KiB

Portainer in docker

guide-by-example

logo

Purpose

Web UI for overview and management of docker environment.

Portainer is a lightweight management web UI, that allows to easily manage docker containers, networks, volumes, images,... the work.

In my use it is mostly information tool, rather than a management tool.

Files and directory structure

/home/
└── ~/
    └── docker/
        └── portainer/
            ├── portainer-data/
            ├── .env
            └── docker-compose.yml
  • portainer-data/ - a directory where portainer stores its peristent data
  • .env - a file containing environment variables for docker compose
  • docker-compose.yml - a docker compose file, telling docker how to run the containers

You only need to provide the files.
The directory is created by docker compose on the first run.

docker-compose

docker-compose.yml

version: '2'

services:
  portainer:
    image: portainer/portainer
    container_name: portainer
    hostname: portainer
    command: -H unix:///var/run/docker.sock
    restart: unless-stopped
    env_file: .env
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./portainer-data:/data

networks:
  default:
    external:
      name: $DOCKER_MY_NETWORK

.env

# GENERAL
MY_DOMAIN=example.com
DOCKER_MY_NETWORK=caddy_net
TZ=Europe/Bratislava

reverse proxy

Caddy v2 is used, details here.

Caddyfile

portainer.{$MY_DOMAIN} {
    reverse_proxy portainer:9000
}

Update

Watchtower updates the image automatically.

Manual image update:

  • docker-compose pull
  • docker-compose up -d
  • docker image prune

Backup and restore

Backup

Using borg that makes daily snapshot of the entire directory.

Restore

  • down the portainer container docker-compose down
  • delete the entire portainer directory
  • from the backup copy back the portainer directory
  • start the container docker-compose up -d