diff --git a/.env.example b/.env.example index 402cfdea..db89fbe7 100644 --- a/.env.example +++ b/.env.example @@ -1,33 +1,31 @@ -# App +# Global TZ=UTC + +# Server SECRET_KEY= - -# URLs PUBLIC_URL=http:// -PUBLIC_SERVER_URL=http:///api - -# Database POSTGRES_HOST=localhost POSTGRES_PORT=5432 POSTGRES_USERNAME=postgres POSTGRES_PASSWORD=postgres POSTGRES_DATABASE=postgres POSTGRES_SSL_CERT= - -# Auth JWT_SECRET= JWT_EXPIRY_TIME=604800 - -# Google PUBLIC_GOOGLE_CLIENT_ID= GOOGLE_CLIENT_SECRET= GOOGLE_API_KEY= - -# SendGrid (Optional) SENDGRID_API_KEY= SENDGRID_FORGOT_PASSWORD_TEMPLATE_ID= SENDGRID_FROM_NAME= SENDGRID_FROM_EMAIL= -# Flags (Optional) -PUBLIC_FLAG_DISABLE_SIGNUPS=false \ No newline at end of file +# Client +PUBLIC_URL=http:// +PUBLIC_SERVER_URL=http:///api +PUBLIC_GOOGLE_CLIENT_ID= + +# Postgres +POSTGRES_USER=postgres +POSTGRES_PASSWORD=postgres +POSTGRES_DATABASE=postgres \ No newline at end of file diff --git a/client/Dockerfile b/client/Dockerfile index 00b1e731..b1956dc4 100644 --- a/client/Dockerfile +++ b/client/Dockerfile @@ -49,4 +49,7 @@ EXPOSE 3000 ENV PORT 3000 +HEALTHCHECK --interval=30s --timeout=20s --retries=3 --start-period=15s \ + CMD curl -fSs 127.0.0.1:3000 || exit 1 + CMD [ "pnpm", "run", "start:client" ] \ No newline at end of file diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index b76892f7..646bbe1d 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -2,7 +2,7 @@ version: '3' services: postgres: - image: postgres + image: postgres:14.2-alpine container_name: postgres ports: - 5432:5432 @@ -10,6 +10,13 @@ services: volumes: - ./scripts/database/initialize.sql:/docker-entrypoint-initdb.d/initialize.sql - pgdata:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres" ] + interval: 30s + timeout: 30s + start_period: 15s + retries: 3 + restart: always traefik: image: traefik diff --git a/docker-compose.yml b/docker-compose.yml index c4209cad..7dc86904 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,16 +2,26 @@ version: '3' services: postgres: - image: postgres + image: postgres:14.2-alpine container_name: postgres ports: - 5432:5432 - env_file: .env + environment: + - POSTGRES_USER="postgres" + - POSTGRES_PASSWORD="postgres" + - POSTGRES_DATABASE="postgres" volumes: - pgdata:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres" ] + interval: 30s + timeout: 30s + start_period: 15s + retries: 3 + restart: always traefik: - image: traefik + image: traefik:rocamadour container_name: traefik command: - --providers.docker=true @@ -25,9 +35,25 @@ services: server: image: amruthpillai/reactive-resume:server-latest container_name: server - env_file: .env environment: - - POSTGRES_HOST=postgres + - TZ="UTC" + - SECRET_KEY="" + - PUBLIC_URL="http://" + - POSTGRES_HOST="postgres" + - POSTGRES_PORT="5432" + - POSTGRES_USERNAME="postgres" + - POSTGRES_PASSWORD="postgres" + - POSTGRES_DATABASE="postgres" + - POSTGRES_SSL_CERT="" + - JWT_SECRET="" + - JWT_EXPIRY_TIME="604800" + - PUBLIC_GOOGLE_CLIENT_ID="" + - GOOGLE_CLIENT_SECRET="" + - GOOGLE_API_KEY="" + - SENDGRID_API_KEY="" # Optional + - SENDGRID_FORGOT_PASSWORD_TEMPLATE_ID="" # Optional + - SENDGRID_FROM_NAME="" # Optional + - SENDGRID_FROM_EMAIL="" # Optional depends_on: - traefik - postgres @@ -38,11 +64,16 @@ services: - traefik.http.routers.server.middlewares=server-stripprefix - traefik.http.middlewares.server-stripprefix.stripprefix.prefixes=/api - traefik.http.middlewares.server-stripprefix.stripprefix.forceslash=true + restart: always client: image: amruthpillai/reactive-resume:client-latest container_name: client - env_file: .env + environment: + - TZ="UTC" + - PUBLIC_URL="http://" + - PUBLIC_SERVER_URL="http:///api" + - PUBLIC_GOOGLE_CLIENT_ID="" depends_on: - traefik - server @@ -50,6 +81,7 @@ services: - traefik.enable=true - traefik.http.routers.client.rule=Host(``) - traefik.http.routers.client.entrypoints=web + restart: always volumes: pgdata: diff --git a/server/Dockerfile b/server/Dockerfile index 4ea509da..ba111b51 100644 --- a/server/Dockerfile +++ b/server/Dockerfile @@ -47,4 +47,7 @@ EXPOSE 3100 ENV PORT 3100 +HEALTHCHECK --interval=30s --timeout=20s --retries=3 --start-period=15s \ + CMD curl -fSs localhost:3100/health || exit 1 + CMD [ "pnpm", "run", "start:server" ] \ No newline at end of file