mirror of
https://github.com/immich-app/immich.git
synced 2026-01-11 20:55:25 -08:00
Description ----------- A while ago I asked on Discord if you people would be interested in removing incompatibilities with rootless docker. See: https://discord.com/channels/979116623879368755/1071165397228855327/1442974448776122592 The e2e tests in `e2e/src/api/specs/oauth.e2e-spec.ts` depend on a docker feature [host-gateway](https://docs.docker.com/reference/cli/dockerd/#configure-host-gateway-ip) that seemingly does not work on rootless docker. So the suggested change is to dockerify the `auth-server` and not run it on the docker host. I would love to receive feedback on this PR and feel free to request further improvements. Things that come to my mind: * Compile typescript instead of using `tsx` * Add hot-reloading of source files in `auth-server/` for development * Add `eslint` configuration for the new folder How Has This Been Tested? ------------------------ I'm running both default and rootless docker on my machine with [docker contexts](https://docs.docker.com/engine/manage-resources/contexts/): ``` docker context ls NAME DESCRIPTION DOCKER ENDPOINT ERROR default unix:///var/run/docker.sock rootless * unix:///run/user/1000/docker.sock ``` If I follow the steps from the [documentation](https://docs.immich.app/developer/testing) then `oauth.e2e-spec.ts` will fail because the `auth-server` on my host can't be reached. The tests pass after these steps: 1. `git switch refactor-auth-server-as-service` 2. `make e2e` 3. In another terminal `cd e2e` 4. `pnpm run test src/api/specs/oauth.e2e-spec.ts` passes Checklist: ---------- - [x] I have performed a self-review of my own code - [x] I have made corresponding changes to the documentation if applicable - [x] I have no unrelated changes in the PR. - [ ] I have confirmed that any new dependencies are strictly necessary. - [ ] I have written tests for new code (if applicable) - [ ] I have followed naming conventions/patterns in the surrounding code - [ ] All code in `src/services/` uses repositories implementations for database calls, filesystem operations, etc. - [ ] All code in `src/repositories/` is pretty basic/simple and does not have any immich specific logic (that belongs in `src/services/`)
62 lines
1.9 KiB
YAML
62 lines
1.9 KiB
YAML
name: immich-e2e
|
|
|
|
services:
|
|
e2e-auth-server:
|
|
build:
|
|
context: ../e2e-auth-server
|
|
ports:
|
|
- 2286:2286
|
|
|
|
immich-server:
|
|
container_name: immich-e2e-server
|
|
image: immich-server:latest
|
|
build:
|
|
context: ../
|
|
dockerfile: server/Dockerfile
|
|
cache_from:
|
|
- type=registry,ref=ghcr.io/immich-app/immich-server-build-cache:linux-amd64-cc099f297acd18c924b35ece3245215b53d106eb2518e3af6415931d055746cd-main
|
|
- type=registry,ref=ghcr.io/immich-app/immich-server-build-cache:linux-arm64-cc099f297acd18c924b35ece3245215b53d106eb2518e3af6415931d055746cd-main
|
|
args:
|
|
- BUILD_ID=1234567890
|
|
- BUILD_IMAGE=e2e
|
|
- BUILD_SOURCE_REF=e2e
|
|
- BUILD_SOURCE_COMMIT=e2eeeeeeeeeeeeeeeeee
|
|
environment:
|
|
- DB_HOSTNAME=database
|
|
- DB_USERNAME=postgres
|
|
- DB_PASSWORD=postgres
|
|
- DB_DATABASE_NAME=immich
|
|
- IMMICH_MACHINE_LEARNING_ENABLED=false
|
|
- IMMICH_TELEMETRY_INCLUDE=all
|
|
- IMMICH_ENV=testing
|
|
- IMMICH_PORT=2285
|
|
- IMMICH_IGNORE_MOUNT_CHECK_ERRORS=true
|
|
volumes:
|
|
- ./test-assets:/test-assets
|
|
depends_on:
|
|
redis:
|
|
condition: service_started
|
|
database:
|
|
condition: service_healthy
|
|
ports:
|
|
- 2285:2285
|
|
|
|
redis:
|
|
image: redis:6.2-alpine@sha256:37e002448575b32a599109664107e374c8709546905c372a34d64919043b9ceb
|
|
|
|
database:
|
|
image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0@sha256:6f3e9d2c2177af16c2988ff71425d79d89ca630ec2f9c8db03209ab716542338
|
|
command: -c fsync=off -c shared_preload_libraries=vchord.so -c config_file=/var/lib/postgresql/data/postgresql.conf
|
|
environment:
|
|
POSTGRES_PASSWORD: postgres
|
|
POSTGRES_USER: postgres
|
|
POSTGRES_DB: immich
|
|
ports:
|
|
- 5435:5432
|
|
healthcheck:
|
|
test: ['CMD-SHELL', 'pg_isready -U postgres -d immich']
|
|
interval: 1s
|
|
timeout: 5s
|
|
retries: 30
|
|
start_period: 10s
|