Migrate from nginx to traefik (#450)

This commit is contained in:
Zoe Roux 2024-04-29 19:42:08 +02:00 committed by GitHub
commit a8b25b9ef6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 59 additions and 59 deletions

View File

@ -26,7 +26,7 @@ jobs:
- name: Start the service
run: |
docker compose up -d back postgres ingress meilisearch # --wait Wait is not available on gha
docker compose up -d back postgres traefik meilisearch --wait
- name: Perform healthchecks
run: |

View File

@ -2,8 +2,7 @@
1. Install docker & docker-compose
2. Download the
[`docker-compose.yml`](https://github.com/zoriya/kyoo/releases/latest/download/docker-compose.yml),
[`nginx.conf.template`](https://raw.githubusercontent.com/zoriya/Kyoo/master/nginx.conf.template) and
[`docker-compose.yml`](https://github.com/zoriya/kyoo/releases/latest/download/docker-compose.yml) and
[`.env`](https://raw.githubusercontent.com/zoriya/Kyoo/master/.env.example) files
3. Fill the `.env` file with your configuration options (and an API Key from [themoviedb.org](https://www.themoviedb.org/))
4. Look at [Hardware Acceleration section](#Hardware-Acceleration) if you need it
@ -17,18 +16,16 @@ To install Kyoo, you need docker and docker-compose. Those can be installed from
or [Windows](https://docs.docker.com/desktop/install/windows-install/). Docker is used to run each services of Kyoo in
an isolated environment with all the dependencies they need.
Kyoo also needs 3 files to work properly. Two of them can simply be copy-pasted from this repository, the other needs to be filled in with your configurations.
Kyoo also needs 2 files to work properly. The first should be downloaded from the latest release artificat, the other needs to be filled in with your configurations.
Those files can be put in any directory of your choice.
Those 3 files are:
Those files are:
- A `docker-compose.yml` (simply download docker-compose.yml from [the latest release](https://github.com/zoriya/kyoo/releases/latest/download/docker-compose.yml)).
- A `nginx.conf.template` copied from [here](https://raw.githubusercontent.com/zoriya/Kyoo/master/nginx.conf.template).
- A `.env` file that you will need to **fill**. Look at the example [.env.example](https://raw.githubusercontent.com/zoriya/Kyoo/master/.env.example)
> If you want an explanation of what are those files, you can read the following:
> The `docker-compose.yml` file describes the different services of Kyoo, where they should be downloaded and their start order. \
> The `nignx.conf.template` file describes which service will be called when accessing the URL of Kyoo. \
> The `.env` file contains all the configuration options that the services in `docker-compose.yml` will read.
To retrieve metadata, Kyoo will need to communicate with an external service. For now, that is `the movie database`.
@ -44,7 +41,7 @@ Congratulation, everything is now ready to use Kyoo. You can navigate to `http:/
# Updating
Updating Kyoo is exactly the same as installing it. Get an updated version of the `docker-compose.yml` and `nginx.conf.template` files and
Updating Kyoo is exactly the same as installing it. Get an updated version of the `docker-compose.yml` file and
unsure that your `.env` contains all the options specified in the updated `.env.example` file.
After that, you will need to update Kyoo's services. For that, open a terminal in the configuration's directory and run

View File

@ -33,6 +33,12 @@ services:
condition: service_completed_successfully
volumes:
- kyoo:/metadata
labels:
- "traefik.enable=true"
- "traefik.http.routers.api.rule=PathPrefix(`/api/`)"
- "traefik.http.routers.api.middlewares=api-sp"
- "traefik.http.middlewares.api-sp.stripprefix.prefixes=/api"
- "traefik.http.middlewares.api-sp.stripprefix.forceSlash=false"
migrations:
build:
@ -50,6 +56,9 @@ services:
restart: on-failure
environment:
- KYOO_URL=${KYOO_URL:-http://back:5000}
labels:
- "traefik.enable=true"
- "traefik.http.routers.front.rule=PathPrefix(`/`)"
scanner:
build: ./scanner
@ -121,20 +130,17 @@ services:
- GOCODER_VAAPI_RENDERER=${GOCODER_VAAPI_RENDERER:-/dev/dri/renderD128}
profiles: ['qsv']
ingress:
image: nginx
restart: on-failure
environment:
- PORT=8901
- FRONT_URL=http://front:8901
- BACK_URL=${KYOO_URL:-http://back:5000}
volumes:
- ./nginx.conf.template:/etc/nginx/templates/kyoo.conf.template:ro
depends_on:
- back
- front
traefik:
image: traefik:v2.11
command:
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entryPoints.web.address=:8901"
- "--accesslog=true"
ports:
- "8901:8901"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
postgres:
image: postgres:15

View File

@ -45,6 +45,12 @@ services:
- ./back:/app
- /app/out/
- kyoo:/metadata
labels:
- "traefik.enable=true"
- "traefik.http.routers.api.rule=PathPrefix(`/api/`)"
- "traefik.http.routers.api.middlewares=api-sp"
- "traefik.http.middlewares.api-sp.stripprefix.prefixes=/api"
- "traefik.http.middlewares.api-sp.stripprefix.forceSlash=false"
migrations:
build:
@ -74,6 +80,9 @@ services:
restart: on-failure
environment:
- KYOO_URL=${KYOO_URL:-http://back:5000}
labels:
- "traefik.enable=true"
- "traefik.http.routers.front.rule=PathPrefix(`/`)"
scanner:
build: ./scanner
@ -145,17 +154,17 @@ services:
- GOCODER_VAAPI_RENDERER=${GOCODER_VAAPI_RENDERER:-/dev/dri/renderD128}
profiles: ['qsv']
ingress:
image: nginx
restart: on-failure
environment:
- PORT=8901
- FRONT_URL=http://front:3000
- BACK_URL=${KYOO_URL:-http://back:5000}
volumes:
- ./nginx.conf.template:/etc/nginx/templates/kyoo.conf.template:ro
traefik:
image: traefik:v2.11
command:
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entryPoints.web.address=:8901"
- "--accesslog=true"
ports:
- "8901:8901"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
postgres:
image: postgres:15

View File

@ -34,6 +34,12 @@ services:
condition: service_completed_successfully
volumes:
- kyoo:/metadata
labels:
- "traefik.enable=true"
- "traefik.http.routers.api.rule=PathPrefix(`/api/`)"
- "traefik.http.routers.api.middlewares=api-sp"
- "traefik.http.middlewares.api-sp.stripprefix.prefixes=/api"
- "traefik.http.middlewares.api-sp.stripprefix.forceSlash=false"
migrations:
image: ghcr.io/zoriya/kyoo_migrations:edge
@ -49,6 +55,9 @@ services:
restart: unless-stopped
environment:
- KYOO_URL=${KYOO_URL:-http://back:5000}
labels:
- "traefik.enable=true"
- "traefik.http.routers.front.rule=PathPrefix(`/`)"
scanner:
image: ghcr.io/zoriya/kyoo_scanner:edge
@ -120,20 +129,17 @@ services:
- GOCODER_VAAPI_RENDERER=${GOCODER_VAAPI_RENDERER:-/dev/dri/renderD128}
profiles: ['qsv']
ingress:
image: nginx
restart: unless-stopped
environment:
- PORT=8901
- FRONT_URL=http://front:8901
- BACK_URL=${KYOO_URL:-http://back:5000}
volumes:
- ./nginx.conf.template:/etc/nginx/templates/kyoo.conf.template:ro
depends_on:
- back
- front
traefik:
image: traefik:v2.11
command:
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entryPoints.web.address=:8901"
- "--accesslog=true"
ports:
- "8901:8901"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
postgres:
image: postgres:15

View File

@ -1,18 +0,0 @@
server {
listen ${PORT};
root /usr/share/nginx/html;
location / {
proxy_pass ${FRONT_URL};
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /api/ {
proxy_pass ${BACK_URL}/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}