From 6d5a14131186b75edd075d04f8a9cedc3e224ca7 Mon Sep 17 00:00:00 2001 From: Mango Habanero Date: Tue, 4 Apr 2023 07:59:43 +0300 Subject: [PATCH] feat(docker): Dockerizes app - containerizes app. --- .dockerignore | 5 ++++ Dockerfile | 10 +++++++ dev/docker-compose.yaml | 59 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 dev/docker-compose.yaml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..6b83dec --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +Dockerfile +node_modules +npm-debug.log +.DS_Store +dist diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..9be683b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,10 @@ +# base image +FROM node:18-alpine as build +WORKDIR /usr/src/app +COPY package*.json ./ +RUN npm ci --omit=optional +COPY . . +RUN npm run build +EXPOSE 9000 +CMD ["npm", "start"] + diff --git a/dev/docker-compose.yaml b/dev/docker-compose.yaml new file mode 100644 index 0000000..c091711 --- /dev/null +++ b/dev/docker-compose.yaml @@ -0,0 +1,59 @@ +version: '3.9' + +networks: + default: + external: true + name: cic + +services: + postgres: + image: postgres:14-alpine + restart: unless-stopped + user: postgres + environment: + - POSTGRES_PASSWORD=postgres + - POSTGRES_USER=postgres + - POSTGRES_DB=cic_ussd + volumes: + - cic-ussd-pg:/var/lib/postgresql/data + - ./init_db.sql:/docker-entrypoint-initdb.d/init_db.sql + ports: + - '5432:5432' + healthcheck: + test: ["CMD-SHELL", "pg_isready"] + interval: 10s + timeout: 5s + retries: 5 + redis: + image: redis:6-alpine + restart: unless-stopped + volumes: + - cic-ussd-redis:/data + ports: + - '6379:6379' + healthcheck: + test: ["CMD-SHELL", "redis-cli ping | grep -q PONG"] + interval: 10s + timeout: 5s + retries: 5 + cic-ussd: + image: cic-ussd:latest + env_file: + - .env + restart: unless-stopped + depends_on: + postgres: + condition: service_healthy + redis: + condition: service_healthy + environment: + - POSTGRES_URL=postgres://postgres:postgres@postgres:5432/cic_ussd + - REDIS_URL=redis://redis:6379 + - NODE_ENV=development + command: npm run start + +volumes: + cic-ussd-pg: + driver: local + cic-ussd-redis: + driver: local \ No newline at end of file