From 151c98e994ff93fba6583678b59ac26d02896565 Mon Sep 17 00:00:00 2001 From: ParkSuMin Date: Sat, 3 Jan 2026 19:47:01 +0300 Subject: [PATCH] Server --- .dockerignore | 6 +++++ Dockerfile.server | 13 ++++++++++ docker-compose.yml | 60 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile.server create mode 100644 docker-compose.yml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..b1239e9 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +node_modules +.git +.gitignore +.gitattributes +README.md +DELIVER_MAN.slnx diff --git a/Dockerfile.server b/Dockerfile.server new file mode 100644 index 0000000..b2b8829 --- /dev/null +++ b/Dockerfile.server @@ -0,0 +1,13 @@ +FROM node:20-alpine + +WORKDIR /app + +COPY package*.json ./ +RUN npm ci --omit=dev + +COPY server ./server + +ENV NODE_ENV=production +EXPOSE 3000 + +CMD ["npm", "start"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..9e06a42 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,60 @@ +services: + db: + image: mariadb:11.4 + environment: + MARIADB_DATABASE: delivery + MARIADB_USER: app + MARIADB_PASSWORD: app + MARIADB_ROOT_PASSWORD: root + volumes: + - db_data:/var/lib/mysql + - ./docker/init.sql:/docker-entrypoint-initdb.d/init.sql:ro + networks: + - backend + healthcheck: + test: ["CMD", "mariadb-admin", "ping", "-h", "localhost", "-u", "root", "-proot"] + interval: 10s + timeout: 5s + retries: 5 + + server: + build: + context: . + dockerfile: Dockerfile.server + environment: + HOST: db + PORT: 3306 + DATABASE: delivery + USER: app + PASSWORD: app + depends_on: + db: + condition: service_healthy + networks: + - backend + - frontend + healthcheck: + test: ["CMD", "node", "-e", "fetch('http://localhost:3000/api/current-date').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"] + interval: 10s + timeout: 5s + retries: 5 + + client: + build: + context: . + dockerfile: Dockerfile.client + depends_on: + server: + condition: service_healthy + ports: + - "8080:80" + networks: + - frontend + +volumes: + db_data: + +networks: + backend: + internal: true + frontend: