Issues deploying the API container

Hi all,

Having some issues getting the api container to deploy. For some reason it’s failing to recognize any database type except sqlite, which I’d prefer not to use.

Here’s my docker compose file, and my redacted environment variables.

version: '3'

networks:
  traefik:
    external: true

services:
  vikunja:
    image: vikunja/frontend:${VIKUNJA_DOCKER_TAG:-latest}
    container_name: ${VIKUNJA_CONTAINER_NAME:-vikunja}
    networks:
      - traefik
    environment:
      - VIKUNJA_API_URL=http://${VIKUNJA_API_CONTAINER_NAME:-vikunja-api}:3456/api/v1
    restart: ${VIKUNJA_RESTART:-unless-stopped}
    labels:
      - joyride.host.name=${VIKUNJA_CONTAINER_NAME:-vikunja}.${HOST_DOMAIN}
      - traefik.enable=true
      - traefik.http.routers.vikunja.entrypoints=websecure
      - traefik.http.routers.vikunja.rule=Host(`${VIKUNJA_CONTAINER_NAME:-vikunja}.${HOST_DOMAIN}`)
      - traefik.http.services.vikunja.loadbalancer.server.port=80
      - com.centurylinklabs.watchtower.enable=true
      - autoheal=true

      # Flame dashboard labels
      
      - flame.type=application
      - flame.name=${VIKUNJA_FLAME_NAME:-vikunja} 
      - flame.url=https://${VIKUNJA_CONTAINER_NAME:-vikunja}.${HOST_DOMAIN}
      - flame.icon=${VIKUNJA_FLAME_ICON:-docker}
  api:
    image: vikunja/api:${VIKUNJA_DOCKER_TAG:-latest}
    container_name: ${VIKUNJA_API_CONTAINER_NAME:-vikunja-api} 
    restart: ${VIKUNJA_RESTART:-unless-stopped}
    networks:
      - traefik
    volumes:
      - ./etc/vikunja/files:/config
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    depends_on:
      - db
    environment:
      - VIKUNJA_DATABASE_HOST= ${VIKUNJA_DATABASE_HOST:-vikunja-mysql}
      - VIKUNA_DATABASE_PASSWORD=${VIKUNJA_DATABASE_PASSWORD:-secret}
      - VIKUNJA_DATABASE_TYPE=${VIKUNJA_DATABASE_TYPE:-mysql} 
      - VIKUNJA_DATABASE_USER=${VIKUNJA_DATABASE_USER:-vikunja}
      - VIKUNJA_DATABASE_DATABASE=${VIKUNJA_DATABASE_DATABASE:-vikunja}
      - VIKUNJA_SERVICE_JWTSECRET= ${VIKUNJA_SERVICE_JWTSECRET:-<a super secure random secret>}
      - VIKUNJA_SERVICE_FRONTENDURL=${VIKUNJA_SERVICE_FRONTENDURL:-http://<your public frontend url with slash>/}
  db:
    image: mariadb:10
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    container_name: ${VIKUNJA_DATABASE_CONTAINER_NAME:-vikunja-mysql}
    environment:
      - MYSQL_ROOT_PASSWORD= ${VIKUNJA_ROOT_password:-supersecret}
      - MYSQL_USER= ${VIKUNJA_DATABASE_USER:-vikunja}
      - MYSQL_PASSWORD= ${VIKUNJA_DATABASE_PASSWORD:-secret}
      - MYSQL_DATABASE= ${VIKUNJA_DATABASE:-vikunja}
      - MYSQL_PASSWORD=${VIKUNJA_POSTGRES_PASSWORD:-secret} 
      - MYSQL_USER=${VIKUNJA_POSTGRES_USER:-vikunja}
      - MYSQL_DATABASE=${VIKUNJA_DATABASE_DATABASE:-vikunja}
    networks:
      - traefik
    volumes:
      - ./etc/vikunja/db:/var/lib/mysql/data
    restart: ${VIKUNJA_RESTART:-unless-stopped}

Environment variables:

VIKUNJA_CONTAINER_NAME=vikunja
VIKUNJA_API_CONTAINER_NAME=vikunja-api
VIKUNJA_DATABASE_HOST=vikunja-mysql
VIKUNJA_DATABASE_TYPE=mysql
VIKUNJA_MYSQL_ROOT_PASSWORD= supersecret
VIKUNJA_DATABASE_USER= vikunja
VIKUNJA_DATABASE_PASSWORD= secret
VIKUNJA_DATABASE= vikunja
VIKUNJA_SERVICE_JWTSECRET=jwtsecret
VIKUNJA_SERVICE_FRONTENDURL=https://${VIKUNJA_CONTAINER_NAME:-vikunja}.${HOST_DOMAIN}/
VIKUNJA_API_URL=http://${VIKUNJA_API_CONTAINER_NAME:-vikunja-api}:3456/api/v1

This is what’s showing in the API container logs.

2023/12/06 00:05:24 No config file found, using default or config from environment variables.
2023-12-06T00:05:24.390190537-05:00: CRITICAL   ▶ db/CreateDBEngine 001 Unknown database type mysql 

Any suggestions?

Does it work if you pass the database type directly in the compose file?

It does not. Same behavior.

It looks like you have an extra space after the database type variable. Does it work if you remove that?

Yep, that was it… I am blind.

Ran into a few other hiccups but got it up and running behind Traefik.

Thanks!