Installera ny tjänst på portainer miljö
Processöversikt
-
Applikationen behöver kunna köras som en eller flera docker-containrar och finnas på ett register. Vi har kopplat upp portainer-miljön sedan innan mot ghcr.io/whitespace-se så att den ska kunna ladda hem images därifrån.
- Om det också behövs en databas sätter man upp det som en separat container i
samma
stack-fil.
- Om det också behövs en databas sätter man upp det som en separat container i
samma
-
Koppla ett domän mot servern som caddy-tjänsten kan plocka upp. Just nu består både test och prod av bara en nod på varje.
- portainer.portainer-lab.devspace.se har IP:
46.246.48.137 - portainer.whitespace.house har IP:
46.246.49.206
- portainer.portainer-lab.devspace.se har IP:
-
För att starta en ny stack på portainer behöver man skapa en docker-compose-fil och ladda upp.
- Det är exakt samma syntax som docker-compose-filerna.
Exempel:
version: '3.8'
services:
sydvatten-bolmen-wordpress:
image: ghcr.io/whitespace-se/forskningsstationbolmen.se-master-wordpress:latest
environment:
- DB_HOST=sydvatten-bolmen-db
- DB_USER=wordpress
- DB_PASSWORD=C9********M2kv
- DB_NAME=wordpress
- WP_ENV=production
- WP_HOME=https://forskningsstationbolmen.se/
- WP_SITEURL=https://forskningsstationbolmen.se/wp
- AUTH_KEY=PGa****9l
- SECURE_AUTH_KEY=hp5*****9kX3
- LOGGED_IN_KEY=8C******hI5
- NONCE_KEY=fX*****G
- AUTH_SALT=XH*****QEr
- SECURE_AUTH_SALT=CHFeHD****bAg
- LOGGED_IN_SALT=ZgJDWUx*****Ck5Z
- NONCE_SALT=BmEE9*****wCK
volumes:
- wordpress_uploads:/var/www/html/web/app/uploads/
- wordpress_webp_express:/var/www/html/web/app/webp-express/
- wordpress_cache:/var/www/html/web/app/cache/
depends_on:
- db
networks:
- caddy-network
deploy:
labels:
shepherd.enable: "true"
caddy_0: forskningsstationbolmen.se
caddy_0.reverse_proxy: "{{upstreams 80}}"
caddy_0.reverse_proxy.header_up_0: Host forskningsstationbolmen.se
caddy_0.reverse_proxy.header_up_1: X-Forwarded-Proto https
caddy_0.import: log forskningsstationbolmen_se.log
sydvatten-bolmen-db:
image: mariadb:10.5
volumes:
- db_data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=l9kGjY0pkvEloEfab7ixuQGwNiLt0Wz2KjN7j72vPTojL5MOmG4tmmrTDaatnXrz
- MYSQL_DATABASE=wordpress
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=C978B*******kv
networks:
- caddy-network
networks:
caddy-network:
external: true
volumes:
db_data:
wordpress_uploads:
wordpress_webp_express:
wordpress_cache:
SSL
Vi använder caddy som lastbalanserare och det är en tjänst som är startad utanför portainer just nu. Caddy är uppsatt att lyssna på olika taggar som man kan sätta som metadata för att ansluta sig till en container.
Automatisk uppdatering och omstart
shepherd.enable: "true"
shepherd är en annan hjälptjänst som automatiskt kollar om det kommit en ny version av en image och startar om den i så fall. Det är den tjänsten som gör att vi har 345 436 nedladdningar just nu av vår support-image. Varje versionskontroll räknar GitHub som en nedladdning.
Dåliga exempel
- I nuvarande miljö har support-plattformen en del tvivelaktiga inställningar.
- Monterar mappar direkt från servern in i en container istället för att använda docker-volymer - gör både backuper och beteende svårare att förutse om vi behöver utöka till flera servrar senare.
- Kör en
mode: globalvilket man bara ska köra på containrar som man vill tvinga att köra på alla servrar för att de är av en mer utility-karaktär. - Har ett
constraintfast vi bara har en server.