Skip to content

Tandoor upgrade v1>v2 #4355

@nett00n

Description

@nett00n

Documentation link

No response

Affected section

Installation

Other

No response

Issue description

On version v1 the external nginx container was used. On v2 nginx is included inside application container.

I spent some time, migrating from v1 to v2 with my docker-compose installation, so here are my config for v1 and v2 for reference:
v1 docker-compose.yaml

services:
  db:
    restart: always
    image: postgres:16-alpine
    volumes:
      - ${GLOBAL_DATA_FOLDER:-/Data}/tandoor/postgresql:/var/lib/postgresql/data
    env_file:
      - ./.env
    networks:
      - default
    healthcheck:
      test: pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_PASSWORD}
      interval: 10s
      timeout: 3s
      retries: 3
    labels:
      com.centurylinklabs.watchtower.enable: "true"
  app:
    restart: always
    image: vabene1111/recipes:${TANDOOR_VERSION:-1.5}
    env_file:
      - ./.env
    volumes:
      - staticfiles:/opt/recipes/staticfiles
      - nginx_config:/opt/recipes/nginx/conf.d
      - ${GLOBAL_DATA_FOLDER:-/Data}/tandoor/mediafiles:/opt/recipes/mediafiles
    depends_on:
      db:
        condition: service_healthy
    networks:
      - default
    healthcheck:
      test: wget --no-verbose --tries=1 --spider http://localhost:80 || exit 1
      interval: 10s
      timeout: 10s
      retries: 5
    labels:
      com.centurylinklabs.watchtower.enable: "true"

  nginx:
    image: nginx:mainline-alpine
    restart: always
    env_file:
      - ./.env
    links:
      - app:web_recipes
    depends_on:
      app:
        condition: service_healthy
    volumes:
      - nginx_config:/etc/nginx/conf.d:ro
      - staticfiles:/static:ro
      - ./media:/media:ro
    networks:
      - traefik_default
      - default
    labels:
      com.centurylinklabs.watchtower.enable: "true"
      traefik.docker.network: traefik_default
      traefik.enable: true
      traefik.http.routers.tandoor.entrypoints: websecure
      traefik.http.routers.tandoor.rule: Host(`${SERVICE_NAME_OVERRIDE:-tandoor}.${DOMAIN_NAME:-local}`)
      traefik.http.routers.tandoor.service: tandoor
      traefik.http.routers.tandoor.tls: true
      traefik.http.routers.tandoor.tls.certresolver: letsencrypt-cloudflare-dns-challenge
      traefik.http.services.tandoor.loadbalancer.server.port: 80
      local.yacht.port.80: WebUI
    healthcheck:
      test: wget --no-verbose --tries=1 --spider http://localhost:80 || exit 1
      interval: 10s
      timeout: 3s
      retries: 3
volumes:
  nginx_config: null
  staticfiles: null
networks:
  traefik_default:
    external: true
  default: null

x-dockge:
  urls:
    - https://${SERVICE_NAME_OVERRIDE:-tandoor}.${DOMAIN_NAME:-local}

v2 docker-compose.yaml

---

services:
  db:
    restart: always
    image: postgres:16-alpine
    volumes:
      - ${GLOBAL_DATA_FOLDER:-/Data}/tandoor/postgresql:/var/lib/postgresql/data
    env_file:
      - ./.env
    networks:
      - default
    healthcheck:
      test: pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_PASSWORD}
      interval: 10s
      timeout: 3s
      retries: 3

  app:
    restart: always
    image: vabene1111/recipes:${TANDOOR_VERSION:-2}
    env_file:
      - ./.env
    volumes:
      - staticfiles:/opt/recipes/staticfiles
      - ${GLOBAL_DATA_FOLDER:-/Data}/tandoor/mediafiles:/opt/recipes/mediafiles
    environment:
      POSTGRES_HOST: db
    depends_on:
      db:
        condition: service_healthy
    networks:
      - traefik_default
      - default
    labels:
      com.centurylinklabs.watchtower.enable: "true"
      traefik.docker.network: traefik_default
      traefik.enable: true
      traefik.http.routers.tandoor.entrypoints: websecure
      traefik.http.routers.tandoor.rule: Host(`${SERVICE_NAME_OVERRIDE:-tandoor}.${DOMAIN_NAME:-local}`)
      traefik.http.routers.tandoor.service: tandoor
      traefik.http.routers.tandoor.tls: true
      traefik.http.routers.tandoor.tls.certresolver: letsencrypt-cloudflare-dns-challenge
      traefik.http.services.tandoor.loadbalancer.server.port: 80
      local.yacht.port.80: WebUI
    healthcheck:
      test: wget --no-verbose --tries=1 --spider http://localhost:80 || exit 1
      interval: 10s
      timeout: 3s
      retries: 3

volumes:
  staticfiles: null
networks:
  traefik_default:
    external: true
  default: null

x-dockge:
  urls:
    - https://${SERVICE_NAME_OVERRIDE:-tandoor}.${DOMAIN_NAME:-local}

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions