Last active 6 months ago

deploy_portainer.sh Raw
1#!/bin/bash
2DOCKER_BASE=/srv/docker
3
4mkdir -p ${DOCKER_BASE}/portainer/container.conf
5
6cat > ${DOCKER_BASE}/portainer/container.conf/docker-compose.yml <<EOF
7version: '3.7'
8services:
9 portainer:
10 image: portainer/portainer
11 command: --no-analytics
12 networks:
13 - default
14 - traefik_default
15 labels:
16 - traefik.enable=true
17 - traefik.backend=portainer
18 - traefik.docker.network=traefik_default
19 - traefik.port=9000
20 - traefik.default.protocol=http
21 restart: always
22 volumes:
23 - /srv/docker/portainer/data:/data
24 - /var/run/docker.sock:/var/run/docker.sock
25 - /etc/localtime:/etc/localtime:ro
26 - /etc/timezone:/etc/timezone:ro
27
28networks:
29 traefik_default:
30 external: true
31EOF
32ln -s container.conf/docker-compose.yml ${DOCKER_BASE}/portainer/
33
34cat > ${DOCKER_BASE}/portainer/container.conf/production.yml <<EOF
35version: '3.7'
36
37services:
38
39 portainer:
40 labels:
41 # https://github.com/containous/traefik/issues/563#issuecomment-421360934
42 - "traefik.frontend.redirect.regex=^(.*)/ui\$\$"
43 - "traefik.frontend.redirect.replacement=\$\$1/ui/"
44 - "traefik.frontend.rule=Host:host.test.org;PathPrefix:/ui;ReplacePathRegex: ^/ui/(.*) /\$\$1"
45 - com.centurylinklabs.watchtower.enable=true
46EOF
47
48cat > ${DOCKER_BASE}/portainer/container.conf/portainer.service <<EOF
49[Unit]
50Description=Portainer Service
51After=network.target docker.service traefik.service
52Requires=docker.service
53
54[Service]
55Type=oneshot
56RemainAfterExit=yes
57
58Environment="WORK_DIR=/srv/docker/portainer/"
59WorkingDirectory=/srv/docker/portainer/
60ExecStartPre=-/usr/local/bin/docker-compose -f "\${WORK_DIR}/docker-compose.yml" -f "\${WORK_DIR}/container.conf/production.yml" down
61ExecStart=/usr/local/bin/docker-compose -f "\${WORK_DIR}/docker-compose.yml" -f "\${WORK_DIR}/container.conf/production.yml" up -d
62ExecStop=/usr/local/bin/docker-compose -f "\${WORK_DIR}/docker-compose.yml" -f "\${WORK_DIR}/container.conf/production.yml" down
63
64[Install]
65WantedBy=docker.service
66EOF
67ln -s ${DOCKER_BASE}/portainer/container.conf/portainer.service /etc/systemd/system/
68
69systemctl daemon-reload && systemctl enable portainer && systemctl start portainer
70