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