From 484b24cd1423a1c6d98038192a5b6460d08910a3 Mon Sep 17 00:00:00 2001 From: belikovme Date: Thu, 31 Oct 2024 00:42:40 +0700 Subject: [PATCH] plus dockers --- Dockerfile | 31 +++++++++++++++++++++++++++++++ docker-compose.yml | 19 +++++++++++++++++++ nginx.conf | 21 +++++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100644 nginx.conf diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..06ae8aa --- /dev/null +++ b/Dockerfile @@ -0,0 +1,31 @@ +# Stage 1: Сборка приложения +FROM node:18-alpine as builder + +WORKDIR /app + +# Копируем файлы package.json и package-lock.json +COPY package*.json ./ + +# Устанавливаем зависимости +RUN npm ci + +# Копируем исходный код +COPY . . + +# Собираем приложение +RUN npm run build + +# Stage 2: Настройка production-окружения +FROM nginx:alpine + +# Копируем собранные файлы из предыдущего этапа +COPY --from=builder /app/dist /usr/share/nginx/html + +# Копируем конфигурацию nginx +COPY nginx.conf /etc/nginx/conf.d/default.conf + +# Открываем порт 80 +EXPOSE 80 + +# Запускаем nginx +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..9194b81 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,19 @@ +version: '3.8' + +services: + web: + build: + context: . + dockerfile: Dockerfile + ports: + - "80:80" + restart: unless-stopped + # Добавьте volumes если нужно хранить данные постоянно + # volumes: + # - ./logs:/var/log/nginx + networks: + - app-network + +networks: + app-network: + driver: bridge \ No newline at end of file diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..ce4e099 --- /dev/null +++ b/nginx.conf @@ -0,0 +1,21 @@ +server { + listen 80; + server_name localhost; + + location / { + root /usr/share/nginx/html; + index index.html; + try_files $uri $uri/ /index.html; + } + + # Кэширование статических файлов + location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|webp)$ { + expires 30d; + add_header Cache-Control "public, no-transform"; + } + + # Запрещаем доступ к .git и другим служебным директориям + location ~ /\. { + deny all; + } +} \ No newline at end of file