Docker
Build image:
$ docker build --no-cache -t simops-api .
Run:
$ docker run -d --name simops-api simops-api
Run from registry image (mind the image version):
$ docker run -d --name simops-api \
-e NODE_ENV=production -e JWT_SECRET=temp \
-e COGNITO_CLIENT_ID=value -e COGNITO_REGION=value -e COGNITO_USER_POOL_ID=value \
-e DB_USER=postgres -e DB_PASSWORD=value -e DB_NAME=simops \
-p 44315:3050 --restart=always registry.gitlab.com/simo-ps/api:0.1.0-dev
Remove container:
$ docker container rm -f simops-api 2>/dev/null || true
Docker Compose
$ docker compose up -d
Manual start
If you don't want to use the docker compose, commands below can be used instead.
PostgreSQL
Manual start locally:
docker run -d --name simops-db-local \
-p 5432:5432 --restart=always \
-e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=simops \
postgres:16.2
Data persistance (ie: on a VPS; change password):
docker run -d --name simops-db \
-p 5432:5432 --restart=always \
-e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=simops \
-e PGDATA=/var/lib/postgresql/data/pgdata \
-v simops-api_simops-db-data:/var/lib/postgresql/data \
postgres:16.2
Postgres version is the one at the moment of writing, you can check docker hub to adapt for lastest version.
With network
Create a network:
docker network create -d bridge --subnet 10.0.0.1/24 simopsnet
Note: Creating a network is optional and could be more difficult to debug.
Start database:
docker run -d --name simops-db-local \
-p 5432:5432 --restart=always --network simops-api_simops \
-e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=simops \
postgres:16.2
Note: database will be empty, no volume/persistance provided.
Start Simops API:
docker run -d --name simops-api \
-p 3050:3050 --restart=always \
--network simopsnet \
simops-api
Troubleshooting
Check if postgres image has correct information set:
$ docker exec simops-db bash -c "printenv | grep POSTGRES_"
Docker compose run:
docker compose -p simops-api \
-f docker-compose.prod.yml run \
-d --name simops-db \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=password \
-e POSTGRES_DB=simops \
db