Skip to main content

Installation

Installation von Mealie.io mit der PostgreSQl

Docker-compose.yaml im Überblick:

services:
  mealie:
    image: ghcr.io/mealie-recipes/mealie:v2.8.0 # 
    container_name: mealie
    restart: always
    ports:
        - "9925:9000" # 
    deploy:
      resources:
        limits:
          memory: 1000M # 
    volumes:
      - mealie-data:/app/data/
    environment:
      # Set Backend ENV Variables Here
      ALLOW_SIGNUP: "false"
      PUID: 1000
      PGID: 1000
      TZ: America/Anchorage
      BASE_URL: https://mealie.yourdomain.com
      # Database Settings
      DB_ENGINE: postgres
      POSTGRES_USER: mealie
      POSTGRES_PASSWORD: mealie
      POSTGRES_SERVER: postgres
      POSTGRES_PORT: 5432
      POSTGRES_DB: mealie
    depends_on:
      postgres:
        condition: service_healthy

  postgres:
    container_name: postgres
    image: postgres:15
    restart: always
    volumes:
      - mealie-pgdata:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: mealie
      POSTGRES_USER: mealie
      PGUSER: mealie
    healthcheck:
      test: ["CMD", "pg_isready"]
      interval: 30s
      timeout: 20s
      retries: 3

volumes:
  mealie-data:
  mealie-pgdata:

Das Docker-compose.ymal ist wie folgt aufgeteilt:aufgebaut:

Hauptanwendung:
services:
yaml:   services:

→ Definiert die Dienste/Container, die gestartet werden sollen.

Hauptanwendung:
yaml:
mealie: mealie:image: image: ghcr.io/mealie-recipes/mealie:v2.8.0

→ Nutzt das Docker-Image von Mealie in Version v2.8.0 aus dem GitHub Container Registry.

container_name: 
yaml:     container_name: mealie

→ Setzt den Namen des Containers auf mealie.

restart: 
yaml:     restart: always

→ Container wird automatisch neu gestartet, wenn er abstürzt oder das System neugestartet wird.

ports: - "9925:9000"
yaml:    ports: - "9925:9000"

→ Leitet Port 9000 im Container auf Port 9925 am Host um. Du erreichst die App also unter http://localhost:9925.

deploy: resources: limits: memory: 1000M
yaml:    deploy: resources: limits: memory: 1000M

→ Begrenzung des Speichers auf 1000 MB. Das ist optional, aber sinnvoll auf kleinen Systemen.

yaml:
volumes: volumes:- - mealie-data:/app/data/

→ Bindet das Volume mealie-data ins Container-Dateisystem an den Pfad /app/data/. Das sichert deine Daten persistent (über Neustarts hinweg).

environment:
yaml:    environment:

→ Hier werden Umgebungsvariablen gesetzt:

depends_on: postgres: condition: service_healthy
yaml:    depends_on: postgres: condition: service_healthy

→ Mealie wartet, bis die postgres-Datenbank bereit und gesund ist, bevor es selbst startet.

Postgres – Datenbankdienst
postgres: container_name: postgres image: postgres:15 restart: always
yaml:    postgres: container_name: postgres image: postgres:15 restart: always

→ Nutzt PostgreSQL Version 15, startet sich bei Fehlern neu.

yaml:
volumes: volumes:- - mealie-pgdata:/var/lib/postgresql/data

→ Speichert die Datenbankdaten dauerhaft in mealie-pgdata.

environment: POSTGRES_PASSWORD: mealie POSTGRES_USER: mealie PGUSER: mealie
yaml:    environment: POSTGRES_PASSWORD: mealie POSTGRES_USER: mealie PGUSER: mealie

→ Setzt Benutzername und Passwort für den Datenbankzugang.

healthcheck: test: ["CMD", "pg_isready"] interval: 30s timeout: 20s retries: 3
yaml:    healthcheck: test: ["CMD", "pg_isready"] interval: 30s timeout: 20s retries: 3

→ Prüft alle 30 Sekunden, ob die Datenbank bereit ist. Maximal 3 Versuche à 20 Sekunden.

Speicher Ort
volumes: mealie-data: mealie-pgdata:
yaml:   volumes: mealie-data: mealie-pgdata:

→ Definiert zwei persistente Speicherbereiche:

Docker-compose.yaml im Überblick:

services:
  mealie:
    image: ghcr.io/mealie-recipes/mealie:v2.8.0 # 
    container_name: mealie
    restart: always
    ports:
        - "9925:9000" # 
    deploy:
      resources:
        limits:
          memory: 1000M # 
    volumes:
      - mealie-data:/app/data/
    environment:
      # Set Backend ENV Variables Here
      ALLOW_SIGNUP: "false"
      PUID: 1000
      PGID: 1000
      TZ: America/Anchorage
      BASE_URL: https://mealie.yourdomain.com
      # Database Settings
      DB_ENGINE: postgres
      POSTGRES_USER: mealie
      POSTGRES_PASSWORD: mealie
      POSTGRES_SERVER: postgres
      POSTGRES_PORT: 5432
      POSTGRES_DB: mealie
    depends_on:
      postgres:
        condition: service_healthy

  postgres:
    container_name: postgres
    image: postgres:15
    restart: always
    volumes:
      - mealie-pgdata:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: mealie
      POSTGRES_USER: mealie
      PGUSER: mealie
    healthcheck:
      test: ["CMD", "pg_isready"]
      interval: 30s
      timeout: 20s
      retries: 3

volumes:
  mealie-data:
  mealie-pgdata: