selfhosted-apps-docker/portainer
2023-04-01 00:43:34 +02:00
..
readme.md update 2023-04-01 00:43:34 +02:00

Portainer in docker

guide-by-example

logo

Purpose

Web GUI for overview and management of docker environment.

Lightweight, allows to easily manage docker containers, images, networks, volumes,...

I don't really use as I love [ctop])(https://github.com/bcicen/ctop), but I keep eye out on it and recommend it to noobs.

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

services:
  portainer:
    image: portainer/portainer-ce
    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
    expose:
      - "9443"

networks:
  default:
    name: $DOCKER_MY_NETWORK
    external: true

.env

# GENERAL
DOCKER_MY_NETWORK=caddy_net
TZ=Europe/Bratislava

reverse proxy

Caddy v2 is used, details here.

Caddyfile

port.example.com {
  reverse_proxy portainer:9443 {
    transport http {
      tls
      tls_insecure_skip_verify
    }
  }
}

Update

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