syncstorage-rs/docker/docker-compose.postgres.yaml
Barry Chen 9e89b6025e
refactor: use configurable running service for Python integration tests (#2186)
* refactor: use configurable running service for Python integration tests

Instead of configuring and starting server instances within Python as
test fixtures, simply testing against a running server.  A mix of make
target and docker-compose changes is used to achieve the same level of
test coverage that previously relied on the (re-)configure and
(re-)start of the services in conftest.py.

A new `make` target, 'run_local_e2e_tests', can be used to run the
integration tests locally.  However, the stage FxA JWT validation tests
in test_e2e.py are excluded.  Those tests rely on the JWK configuration
of the Token Server and the stage FxA API, making them less "local".
Anyone working on that specific integration can certainly invoke those
tests themselves.

This patch also:
 - deletes some duplicate docs
 - moves the docker-compose yamls into a dir name 'docker'

* Apply suggestion from @pjenvey

Co-authored-by: Philip Jenvey <pjenvey@underboss.org>

* Apply suggestion from @pjenvey

Co-authored-by: Philip Jenvey <pjenvey@underboss.org>

* Clean-up based on feedback.

* Remove integration_tests/conftest.py

* Prune yamls

---------

Co-authored-by: Philip Jenvey <pjenvey@underboss.org>
2026-04-10 12:32:57 -05:00

94 lines
2.6 KiB
YAML

services:
sync-db:
image: docker.io/library/postgres:18.0
volumes:
- sync_db_data:/var/lib/postgresql/18/docker
restart: always
ports:
- "5432"
environment:
POSTGRES_DB: syncstorage
POSTGRES_USER: test
POSTGRES_PASSWORD: test
healthcheck:
test: ["CMD-SHELL", "pg_isready -U test -d syncstorage"]
interval: 2s
retries: 10
start_period: 20s
timeout: 2s
sync-db-setup:
image: app:build
depends_on:
sync-db:
condition: service_healthy
restart: "no"
entrypoint:
- /bin/sh
- -c
- sleep infinity
environment:
SYNC_SYNCSTORAGE__DATABASE_URL: postgres://test:test@sync-db:5432/syncstorage
tokenserver-db:
image: docker.io/library/postgres:18.0
volumes:
- tokenserver_db_data:/var/lib/postgresql/18/docker
restart: always
ports:
- "5432"
environment:
POSTGRES_DB: tokenserver
POSTGRES_USER: test
POSTGRES_PASSWORD: test
healthcheck:
test: ["CMD-SHELL", "pg_isready -U test -d tokenserver"]
interval: 2s
retries: 10
start_period: 20s
timeout: 2s
mock-fxa-server:
image: app:build
restart: "no"
entrypoint: "sh /app/scripts/start_mock_fxa_server.sh"
environment:
MOCK_FXA_SERVER_HOST: 0.0.0.0
MOCK_FXA_SERVER_PORT: 6000
syncserver:
# NOTE: The naming in the rest of this repository has been updated to reflect the fact
# that Syncstorage and Tokenserver are now part of one repository/server called
# "Syncserver" (updated from "syncstorage-rs"). We keep the legacy naming below for
# backwards compatibility with previous Docker images.
image: ${SYNCSTORAGE_RS_IMAGE:-syncstorage-rs:latest}
restart: always
ports:
- "8000:8000"
depends_on:
sync-db-setup:
condition: service_started
tokenserver-db:
condition: service_healthy
environment:
SYNC_HOST: 0.0.0.0
SYNC_MASTER_SECRET: secret0
SYNC_SYNCSTORAGE__DATABASE_URL: postgres://test:test@sync-db:5432/syncstorage
SYNC_TOKENSERVER__DATABASE_URL: postgres://test:test@tokenserver-db:5432/tokenserver
SYNC_TOKENSERVER__NODE_TYPE: postgres
SYNC_TOKENSERVER__RUN_MIGRATIONS: "true"
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:8000/__heartbeat__ || exit 1"]
interval: 2s
retries: 5
start_period: 30s
timeout: 3s
volumes:
sync_db_data:
tokenserver_db_data:
# Application runs off of port 8000.
# you can test if it's available with
# curl "http://localhost:8000/__heartbeat__"