<https://github.com/Disfactory/Disfactory/issues/667|#667 Fix docker service initialization>
When I testing the built docker image with docker compose locally, I encountered the following errors.
After fixing this error, could you add test and run those test in test workflow?
# docker-compose.yml
version: "3.9"
services:
postgres:
image: postgis/postgis:14-3.2
container_name: disfactory-postgres
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER"]
interval: 10s
timeout: 5s
retries: 5
backend:
image: <http://ghcr.io/disfactory/disfactory/backend:latest|ghcr.io/disfactory/disfactory/backend:latest>
container_name: disfactory-backend
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
command: >
sh -c "
cd /Disfactory &&
python manage.py collectstatic --noinput &&
python manage.py migrate &&
gunicorn -c gunicorn.conf.py gis_project.wsgi
"
environment:
# — Database —
DISFACTORY_BACKEND_DEFAULT_DB_HOST: postgres
DISFACTORY_BACKEND_DEFAULT_DB_PORT: 5432
DISFACTORY_BACKEND_DEFAULT_DB_NAME: ${POSTGRES_DB}
DISFACTORY_BACKEND_DEFAULT_DB_USER: ${POSTGRES_USER}
DISFACTORY_BACKEND_DEFAULT_DB_PASSWORD: ${POSTGRES_PASSWORD}
# — General settings —
DISFACTORY_BACKEND_DEBUG: "false"
DISFACTORY_ALLOWED_HOST: "*"
DISFACTORY_BACKEND_CORS_ORIGIN_WHITELIST: ""
DISFACTORY_BACKEND_MAX_FACTORY_PER_GET: "50"
DISFACTORY_BACKEND_MAX_FACTORY_RADIUS_PER_GET: "10"
DISFACTORY_BACKEND_LOG_LEVEL: "INFO"
DISFACTORY_BACKEND_LOG_FILE: "/tmp/disfactory.log"
DISFACTORY_BACKEND_MEDIA_ROOT: "./images/"
DISFACTORY_BACKEND_DOMAIN: ${BACKEND_DOMAIN}
DISFACTORY_FRONTEND_DOMAIN: "<https://disfactory.tw/>"
PORT: "8000"
# — Secrets —
GOOGLE_MAP_API_KEY: ${GOOGLE_MAP_API_KEY}
DISFACTORY_IMGUR_CLIENT_ID: ${DISFACTORY_IMGUR_CLIENT_ID}
ports:
- "8000:8000"
worker:
image: <http://ghcr.io/disfactory/disfactory/backend:latest|ghcr.io/disfactory/disfactory/backend:latest>
container_name: disfactory-worker
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
backend:
condition: service_started
command: >
sh -c "
cd /Disfactory &&
python manage.py qcluster
"
environment:
# — Database —
DISFACTORY_BACKEND_DEFAULT_DB_HOST: postgres
DISFACTORY_BACKEND_DEFAULT_DB_PORT: 5432
DISFACTORY_BACKEND_DEFAULT_DB_NAME: ${POSTGRES_DB}
DISFACTORY_BACKEND_DEFAULT_DB_USER: ${POSTGRES_USER}
DISFACTORY_BACKEND_DEFAULT_DB_PASSWORD: ${POSTGRES_PASSWORD}
# — General settings —
DISFACTORY_BACKEND_DEBUG: "false"
DISFACTORY_ALLOWED_HOST: "*"
DISFACTORY_BACKEND_LOG_LEVEL: "INFO"
# — Secrets —
GOOGLE_MAP_API_KEY: ${GOOGLE_MAP_API_KEY}
volumes:
pgdata:
```
disfactory-worker | Traceback (most recent call last):
disfactory-worker | File "/usr/local/lib/python3.9/site-packages/django/db/backends/utils.py", line 84, in _execute
disfactory-worker | return self.cursor.execute(sql, params)
disfactory-worker | psycopg2.errors.UndefinedTable: relation "django_q_ormq" does not exist
disfactory-worker | LINE 1: ...go_q_ormq"."payload", "django_q_ormq"."lock" FROM "django_q_...
disfactory-worker | ^
disfactory-worker |
disfactory-worker |
disfactory-worker | The above exception was the direct cause of the following exception:
disfactory-worker |
disfactory-worker | Traceback (most recent call last):
disfactory-worker | File "/usr/local/lib/python3.9/site-packages/django_q/cluster.py", line 289, in pusher
disfactory-worker | task_set = broker.dequeue()
disfactory-worker | File "/usr/local/lib/python3.9/site-packages/django_q/brokers/orm.py", line 55, in dequeue
disfactory-worker | if tasks:
disfactory-worker | File "/usr/local/lib/python3.9/site-packages/django/db/models/query.py", line 278, in __bool__
disfactory-worker | self._fetch_all()
disfactory-worker | File "/usr/local/lib/python3.9/site-packages/django/db/models/query.py", line 1242, in _fetch_all
disfactory-worker | self._result_cache = list(self._iterable_class(self))
disfactory-worker | File "/usr/local/lib/python3.9/site-packages/django/db/models/query.py", line 55, in __iter__
disfactory-worker | results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
disfactory-worker | File "/usr/local/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1142, in execute_sql
disfactory-worker | cursor.execute(sql, params)
disfactory-worker | File "/usr/local/lib/python3.9/site-packages/django/db/backends/utils.py", line 67, in execute
disfactory-worker | return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
disfactory-worker | File "/usr/local/lib/python3.9/site-packages/django/db/backends/utils.py", line 76, in _execute_with_wrappers
disfactory-worker | return executor(sql, params, many, context)
disfactory-worker | File "/usr/local/lib/python3.9/site-packages/django/db/backends/utils.py", line 84, in _execute
disfactory-worker | return self.cursor.execute(sql, params)
disfactory-worker | File "/usr/local/lib/python3.9/site-packages/django/db/utils.py", line 89, in __exit__
disfactory-worker | raise dj_exc_value.with_traceback(traceback) from exc_value
disfactory-worker | File "/usr/local/lib/python3.9/site-packages/django/db/backends/utils.py", line 84, in _execute
disfactory-worker | return self.cursor.execute(sql, params)
disfactory-worker | django.db.utils.ProgrammingError: relation "django_q_ormq" does not exist
disfactory-worker | LINE 1: ...go_q_ormq"."payload", "django_q_ormq"."lock" FROM "django_q_...
disfactory-worker | ^
```
```
disfactory-backend | *
disfactory-backend | Traceback (most recent call last):
disfactory-backend | File "/Disfactory/manage.py", line 24, in <module>
disfactory-backend | main()
disfactory-backend | File "/Disfactory/manage.py", line 20, in main
disfactory-backend | execute_from_command_line(sys.argv)
disfactory-backend | File "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
disfactory-backend | utility.execute()
disfactory-backend | File "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py", line 375, in execute
disfactory-backend | self.fetch_command(subcommand).run_from_argv(self.argv)
disfactory-backend | File "/usr/local/lib/python3.9/site-packages/django/core/management/base.py", line 323, in run_from_argv
disfactory-backend | self.execute(*args, **cmd_options)
disfactory-backend | File "/usr/local/lib/python3.9/site-packages/django/core/management/base.py", line 364, in execute
disfactory-backend | output = self.handle(*args, **options)
disfactory-backend | File "/usr/local/lib/python3.9/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 188, in handle
disfactory-backend | collected = self.collect()
disfactory-backend | File "/usr/local/lib/python3.9/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line…