diff --git a/docker-compose.dev.override.yml b/docker-compose.dev.override.yml index 0cb7528..08063bf 100644 --- a/docker-compose.dev.override.yml +++ b/docker-compose.dev.override.yml @@ -21,11 +21,14 @@ services: volumes: - dbdata:/var/lib/postgresql/data - ./db:/mnt + manage: deploy: replicas: 0 environment: DJANGO_SETTINGS_MODULE: feo_homepage.settings.dev + depends_on: + - db mailhog: image: mailhog/mailhog diff --git a/docker-compose.prod.override.yml b/docker-compose.prod.override.yml new file mode 100644 index 0000000..4366c2e --- /dev/null +++ b/docker-compose.prod.override.yml @@ -0,0 +1,39 @@ +services: + backend: + restart: unless-stopped + networks: + - default + - traefik + - db + labels: + - traefik.enable=true + - traefik.docker.network=traefik + - traefik.http.routers.feohomepage.entrypoints=websecure + - traefik.http.routers.feohomepage.rule=Host(`feoneu.asw.io`) + - traefik.http.routers.feohomepage.tls.certresolver=hetzner + - traefik.http.services.feohomepage.loadbalancer.server.port=8000 + + nginx: + image: nginx:1.23 + volumes: + - ./backend/static:/usr/share/nginx/html/static:ro + - ./backend/media:/usr/share/nginx/html/media:ro + networks: + - traefik + labels: + - traefik.enable=true + - traefik.docker.network=traefik + - traefik.http.routers.feohomepagestatic.entrypoints=websecure + - traefik.http.routers.feohomepagestatic.rule=Host(`feoneu.asw.io`) && (PathPrefix(`/static`) || PathPrefix(`/media`)) + - traefik.http.routers.feohomepagestatic.tls.certresolver=hetzner + - traefik.http.services.feohomepagestatic.loadbalancer.server.port=80 + restart: unless-stopped + +networks: + default: + traefik: + external: true + name: traefik + db: + external: true + name: db diff --git a/docker-compose.yml b/docker-compose.yml index 5dacfb3..dd40e94 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,10 +8,10 @@ services: entrypoint: - "daphne" command: "-b 0.0.0.0 feo_homepage.asgi:application" - # deploy: - # mode: replicated - # replicas: 6 - # endpoint_mode: vip + deploy: + mode: replicated + replicas: 6 + endpoint_mode: vip volumes: - .:/app - userhome:/home/runuser @@ -19,9 +19,7 @@ services: - .env environment: PYTHONDONTWRITEBYTECODE: 1 - DJANGO_SETTINGS_MODULE: feo_homepage.settings.dev - depends_on: - - db + DJANGO_SETTINGS_MODULE: feo_homepage.settings.prod restart: unless-stopped manage: @@ -38,11 +36,9 @@ services: - userhome:/home/runuser env_file: - .env - depends_on: - - db environment: PYTHONDONTWRITEBYTECODE: 1 - DJANGO_SETTINGS_MODULE: feo_homepage.settings.dev + DJANGO_SETTINGS_MODULE: feo_homepage.settings.prod volumes: userhome: diff --git a/requirements.in b/requirements.in index 9b0b9e8..9698db8 100644 --- a/requirements.in +++ b/requirements.in @@ -7,3 +7,4 @@ icalendar psycopg[binary] django-crispy-forms django-braces +daphne diff --git a/requirements.txt b/requirements.txt index fdd6066..b483a54 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,13 +7,34 @@ anyascii==0.3.2 # via wagtail asgiref==3.8.1 - # via django + # via + # daphne + # django +attrs==25.3.0 + # via + # service-identity + # twisted +autobahn==24.4.2 + # via daphne +automat==25.4.16 + # via twisted beautifulsoup4==4.13.4 # via wagtail certifi==2025.4.26 # via requests +cffi==1.17.1 + # via cryptography charset-normalizer==3.4.1 # via requests +constantly==23.10.4 + # via twisted +cryptography==44.0.2 + # via + # autobahn + # pyopenssl + # service-identity +daphne==4.1.2 + # via -r requirements.in defusedxml==0.7.1 # via willow django==5.2 @@ -64,10 +85,19 @@ et-xmlfile==2.0.0 # via openpyxl filetype==1.2.0 # via willow +hyperlink==21.0.0 + # via + # autobahn + # twisted icalendar==6.1.3 # via -r requirements.in idna==3.10 - # via requests + # via + # hyperlink + # requests + # twisted +incremental==24.7.2 + # via twisted laces==0.1.2 # via wagtail openpyxl==3.1.5 @@ -82,10 +112,22 @@ psycopg[binary]==3.2.6 # via -r requirements.in psycopg-binary==3.2.6 # via psycopg +pyasn1==0.6.1 + # via + # pyasn1-modules + # service-identity +pyasn1-modules==0.4.2 + # via service-identity +pycparser==2.22 + # via cffi +pyopenssl==25.0.0 + # via twisted python-dateutil==2.9.0.post0 # via icalendar requests==2.32.3 # via wagtail +service-identity==24.2.0 + # via twisted six==1.17.0 # via python-dateutil soupsieve==2.7 @@ -94,12 +136,18 @@ sqlparse==0.5.3 # via django telepath==0.3.1 # via wagtail +twisted[tls]==24.11.0 + # via daphne +txaio==23.1.1 + # via autobahn typing-extensions==4.13.2 # via # beautifulsoup4 # django-stubs-ext # django-tasks # psycopg + # pyopenssl + # twisted tzdata==2025.2 # via icalendar urllib3==2.4.0 @@ -116,3 +164,8 @@ willow[heif]==1.10.0 # via # wagtail # willow +zope-interface==7.2 + # via twisted + +# The following packages are considered to be unsafe in a requirements file: +# setuptools