Deployment
The deployment process relies on Docker containers, which can be deployed through horizontal scaling solutions like Kubernetes or AWS Elastic Beanstalk, just to give a couple of examples.
Docker Image
An automated docker image is built via continous integration using Docker Hub, and is publicly available as pabloszx/learner-model-gql. The Dockerfile of the image is available at the root as /Dockerfile.
Commands
The Docker image doesn't have any default command, it has to be manually specified.
Expected possible commands:
- Gateway:
pnpm -r start --filter=service-gateway
- State Service:
pnpm -r start --filter=service-state
- Projects Service:
pnpm -r start --filter=service-projects
- Domain Service:
pnpm -r start --filter=service-domain
- Content Service:
pnpm -r start --filter=service-content
- Actions Service:
pnpm -r start --filter=service-actions
- Users Service:
pnpm -r start --filter=service-users
- Apply migrations on database:
pnpm -r migrate:deploy
Environment Variables
Every service expects the following environment variables:
DATABASE_URL
: Connection URL to Postgres DatabaseAUTH0_DOMAIN
+AUTH0_CLIENT
+AUTH0_SECRET
: Auth0 credentials
By default every service will listen depending on the environment variable PORT
, but if not present, it fallbacks to the port specified in packages/services/list.ts
.
The Gateway also can use the environment variable PORT
, but if not present, it fallbacks to the port 8080
.
Single server host deployment
The project can also be deployed in a single server host, which for this use-case its recommended to leverage Docker Compose.
In the root of the project's repository a docker-compose.yml is available,
which has all the minimum configuration required to deploy the system in a single host.
The recommended docker-compose.yml expects to have a .env
file besides, containing all the credentials just as mentioned in the Getting Started page.