diff --git a/docker-compose.yml b/docker-compose.yml index 8d1c8b6..01c2c0d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1 +1,42 @@ - +services: + backend: + build: + context: backend + restart: unless-stopped + ports: + - "8000" + env_file: + - path: ./env/backend/prod.env + required: true + volumes: + - ./backend/app:/code/app:z + depends_on: + postgres: + condition: service_healthy + nginx: + build: + dockerfile: ./nginx/Dockerfile + restart: unless-stopped + volumes: + - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro + - ./static:/static + depends_on: + - backend + ports: + - "80:80" + postgres: + image: postgres:16.2-alpine + restart: unless-stopped + ports: + - "5432:5432" + volumes: + - ./postgres_data:/var/lib/postgresql/data/ + env_file: + - path: ./env/postgres.env + required: true + healthcheck: + test: + ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} --user $${POSTGRES_USER}"] + interval: 2s + timeout: 2s + retries: 5 diff --git a/env/backend/prod.env b/env/backend/prod.env index e69de29..529f782 100644 --- a/env/backend/prod.env +++ b/env/backend/prod.env @@ -0,0 +1,3 @@ +POSTGRES_USER=user +POSTGRES_PASSWORD=password +POSTGRES_DB=db \ No newline at end of file diff --git a/env/frontend/prod.env b/env/frontend/prod.env index e69de29..c6d302f 100644 --- a/env/frontend/prod.env +++ b/env/frontend/prod.env @@ -0,0 +1,5 @@ +CI=true +PORT=3000 +HOST=0.0.0.0 +WDS_SOCKET_PORT=0 +REACT_APP_DOMAIN=127.0.0.1 \ No newline at end of file diff --git a/frontend/app/src/config/translationMap.json b/frontend/app/src/config/translationMap.json index 3d97e7e..3976c03 100644 --- a/frontend/app/src/config/translationMap.json +++ b/frontend/app/src/config/translationMap.json @@ -64,5 +64,8 @@ }, "Dashboard": { "ru": "Панель управления" + }, + "Page not found": { + "ru": "Страница не найдена" } } \ No newline at end of file diff --git a/frontend/app/src/pages/NotFoundPage.tsx b/frontend/app/src/pages/NotFoundPage.tsx index 00520ef..260c061 100644 --- a/frontend/app/src/pages/NotFoundPage.tsx +++ b/frontend/app/src/pages/NotFoundPage.tsx @@ -9,7 +9,8 @@ const NotFoundPage = () => {
- {tr("Not found")} + {tr("Page not found")} + 404 ); }; diff --git a/nginx/Dockerfile b/nginx/Dockerfile new file mode 100644 index 0000000..673dbf0 --- /dev/null +++ b/nginx/Dockerfile @@ -0,0 +1,11 @@ +FROM node:21-alpine as build +WORKDIR /app +ENV PATH /app/node_modules/.bin:$PATH +COPY ./frontend/app . +RUN npm ci +RUN npm run build + +FROM nginx:1.25.4-alpine +COPY --from=build /app/dist /usr/share/nginx/html +EXPOSE 80 +CMD ["nginx", "-g", "daemon off;"] diff --git a/nginx/nginx.conf b/nginx/nginx.conf index ed2cdf2..1305ef0 100644 --- a/nginx/nginx.conf +++ b/nginx/nginx.conf @@ -1,6 +1,6 @@ server { listen 80; - server_name 192.168.1.121; + server_name queueful.ollyhearn.ru; location / { proxy_hide_header 'Access-Control-Allow-Origin'; add_header 'Access-Control-Allow-Origin' '*' always; @@ -25,7 +25,7 @@ server { proxy_hide_header 'Access-Control-Allow-Methods'; add_header 'Access-Control-Allow-Methods' '*' always; - proxy_pass http://api:8000/api/; + proxy_pass http://backend:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;