diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 0000000..04dc5c4 --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,10 @@ +FROM python:3.12-slim + +WORKDIR /app + +COPY backend/requirements.txt /app/ +RUN pip install --no-cache-dir -r requirements.txt + +COPY backend /app + +CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..6311176 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,18 @@ +version: "3.9" + +services: + backend: + build: + context: . + dockerfile: backend/Dockerfile + container_name: my-backend + restart: unless-stopped + + frontend: + build: + context: . + dockerfile: frontend/Dockerfile + container_name: my-frontend + ports: + - "6080:80" + restart: unless-stopped diff --git a/frontend/Dockerfile b/frontend/Dockerfile new file mode 100644 index 0000000..ef827e2 --- /dev/null +++ b/frontend/Dockerfile @@ -0,0 +1,17 @@ +# Etap 1: Build Vue +FROM node:20 AS build +WORKDIR /app +COPY frontend/package*.json ./ +RUN npm install +COPY frontend ./ +RUN npm run build + +# Etap 2: Nginx serwujący Vue + proxy do backendu +FROM nginx:alpine +COPY --from=build /app/dist /usr/share/nginx/html + +# Konfiguracja Nginx z proxy +COPY nginx.conf /etc/nginx/conf.d/default.conf + +EXPOSE 80 +CMD ["nginx", "-g", "daemon off;"] diff --git a/frontend/nginx.conf b/frontend/nginx.conf new file mode 100644 index 0000000..d3107af --- /dev/null +++ b/frontend/nginx.conf @@ -0,0 +1,19 @@ +server { + listen 80; + + # Serwowanie plików Vue + location /odoo/ { + root /usr/share/nginx/html; + index index.html; + try_files $uri $uri/ /index.html; + } + + # Proxy do backendu (niewidoczny z zewnątrz) + location /odoo/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; + proxy_set_header X-Forwarded-Proto $scheme; + } +} diff --git a/frontend/src/api/api.js b/frontend/src/api/api.js index 3b0fecf..4b57eb1 100644 --- a/frontend/src/api/api.js +++ b/frontend/src/api/api.js @@ -4,7 +4,7 @@ import router from '@/router' import { useAuthStore } from '@/stores/authStore' const api = axios.create({ - baseURL: 'http://localhost:8000', // Twój backend + baseURL: '/odoo/api', // Twój backend }) // Request interceptor – dodawanie tokena diff --git a/frontend/vite.config.js b/frontend/vite.config.js index 036ca4d..b864b95 100644 --- a/frontend/vite.config.js +++ b/frontend/vite.config.js @@ -6,6 +6,7 @@ import vueDevTools from 'vite-plugin-vue-devtools' // https://vite.dev/config/ export default defineConfig({ + base: '/odoo/', plugins: [vue(), vueDevTools()], resolve: { alias: {