go-vikunja/vikunja

[BUG] VIKUNJA_SERVICE_ENABLEREGISTRATION environment variable not being set

Closed this issue · 4 comments

Description

I'm using docker-compose to run vikunja, and everything works nicely, except that when I set the VIKUNJA_SERVICE_ENABLEREGISTRATION=false or VIKUNJA_SERVICE_ENABLEREGISTRATION=0 it's still VIKUNJA_SERVICE_ENABLEREGISTRATION='true' in the container.

My docker-compose.yml file:

version: '3'

services:
  database:
    image: postgres:14-alpine@sha256:28407a9961e76f2d285dc6991e8e48893503cc3836a4755bbc2d40bcc272a441
    container_name: vikunja_postgres
    env_file:
      - .env
    volumes:
      - vikunja_postgres:/var/lib/postgresql/data
    restart: always

  api:
    image: vikunja/api
    container_name: vikunja_api
    env_file:
      - .env
    volumes:
      - vikunja_api:/app/vikunja/files
    ports:
      - 3456:3456
    depends_on:
      - database
    restart: always

  frontend:
    image: vikunja/frontend
    container_name: vikunja_frontend
    ports:
      - 8081:80
    restart: always

volumes:
  vikunja_postgres:
  vikunja_api:

Here's the .env file:

POSTGRES_PASSWORD="secret"
POSTGRES_USER="vikunja"
POSTGRES_DB="vikunja"

VIKUNJA_DATABASE_HOST="vikunja_postgres"
VIKUNJA_DATABASE_TYPE="postgres"
VIKUNJA_DATABASE_PASSWORD="${POSTGRES_PASSWORD}"
VIKUNJA_DATABASE_USER="${POSTGRES_USER}"
VIKUNJA_DATABASE_DATABASE="${POSTGRES_DB}"
VIKUNJA_SERVICE_JWTSECRET="super secret"
VIKUNJA_SERVICE_FRONTENDURL="https://vikunja.domain.com/"
VIKUNJA_SERVICE_ENABLEREGISTRATION=false

Everything else is set correctly, but the VIKUNJA_SERVICE_ENABLEREGISTRATION.
Verified by docker exec -it vikunja_api sh and running /app/vikunja # export:

export HOME='/root'
export HOSTNAME='26d323421cb1'
export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
export PGID='1000'
export POSTGRES_DB='vikunja'
export POSTGRES_PASSWORD='secret'
export POSTGRES_USER='vikunja'
export PUID='1000'
export PWD='/app/vikunja'
export SHLVL='1'
export TERM='xterm'
export VIKUNJA_DATABASE_DATABASE='vikunja'
export VIKUNJA_DATABASE_HOST='vikunja_postgres'
export VIKUNJA_DATABASE_PASSWORD='secret'
export VIKUNJA_DATABASE_TYPE='postgres'
export VIKUNJA_DATABASE_USER='vikunja'
export VIKUNJA_SERVICE_ENABLEREGISTRATION='true'
export VIKUNJA_SERVICE_FRONTENDURL='https://vikunja.domain.com/'
export VIKUNJA_SERVICE_JWTSECRET='super secret'
export VIKUNJA_SERVICE_ROOTPATH='/app/vikunja/'

Vikunja Frontend Version

latest

Vikunja API Version

latest

Browser and version

No response

Can you reproduce the bug on the Vikunja demo site?

No

Screenshots

No response

Seems to be an issue with docker compose. This works fine:

$ docker run -it -e VIKUNJA_SERVICE_ENABLEREGISTRATION=false --entrypoint sh vikunja/api

/app/vikunja # export
export HOME='/root'
export HOSTNAME='ec081e05c04f'
export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
export PGID='1000'
export PUID='1000'
export PWD='/app/vikunja'
export SHLVL='1'
export TERM='xterm'
export VIKUNJA_SERVICE_ENABLEREGISTRATION='false'
export VIKUNJA_SERVICE_ROOTPATH='/app/vikunja/'

Does it work if you add the env variable directly to the compose config?

Nope, doesn't work. Tested with:

environment:
  VIKUNJA_SERVICE_ENABLEREGISTRATION: "false" # and 0

and

environment:
  - VIKUNJA_SERVICE_ENABLEREGISTRATION=false

None of the three methods I tested changes the environment variable to false in the container.

Edit:
After some googling around, starting docker-composer prepended with VIKUNJA_SERVICE_ENABLEREGISTRATION=false docker-compose up -d works. I'm out of ideas as to why it wouldn't pass in it from the docker-compose file?

OK, more googling, and finally came to a conclusion:

env_file:
  - .env
environment:
  VIKUNJA_SERVICE_ENABLEREGISTRATION: ${VIKUNJA_SERVICE_ENABLEREGISTRATION}

If someone else has this same issue, you need to provide the environment variables to use separately. I had misunderstood the env_file functionality in a docker-compose file. The answer from SO here explains: https://stackoverflow.com/a/72368718