update Dockerfile and settings for static files handling; adjust nginx config for Django and Vue integration
This commit is contained in:
@@ -42,11 +42,14 @@ COPY --from=builder /usr/local/bin/ /usr/local/bin/
|
|||||||
# Copy application code with ownership
|
# Copy application code with ownership
|
||||||
COPY --chown=appuser:appuser . .
|
COPY --chown=appuser:appuser . .
|
||||||
|
|
||||||
|
# Collect static files
|
||||||
|
RUN python manage.py collectstatic --noinput
|
||||||
|
|
||||||
# Switch to non-root user
|
# Switch to non-root user
|
||||||
USER appuser
|
USER appuser
|
||||||
|
|
||||||
# Expose Django port
|
# Expose Django port
|
||||||
EXPOSE 7080
|
EXPOSE 7090
|
||||||
|
|
||||||
# Run Django with uvicorn
|
# Run Django with uvicorn
|
||||||
CMD ["uvicorn", "MPM:application", "--host", "0.0.0.0", "--port", "7080"]
|
CMD ["uvicorn", "MPM:application", "--host", "0.0.0.0", "--port", "7090"]
|
||||||
|
|||||||
@@ -122,6 +122,11 @@ USE_TZ = True
|
|||||||
# https://docs.djangoproject.com/en/5.2/howto/static-files/
|
# https://docs.djangoproject.com/en/5.2/howto/static-files/
|
||||||
|
|
||||||
STATIC_URL = 'static/'
|
STATIC_URL = 'static/'
|
||||||
|
STATIC_ROOT = BASE_DIR / "staticfiles"
|
||||||
|
|
||||||
|
# Proxy settings
|
||||||
|
USE_X_FORWARDED_HOST = True
|
||||||
|
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
|
||||||
|
|
||||||
# Default primary key field type
|
# Default primary key field type
|
||||||
# https://docs.djangoproject.com/en/5.2/ref/settings/#default-auto-field
|
# https://docs.djangoproject.com/en/5.2/ref/settings/#default-auto-field
|
||||||
|
|||||||
@@ -2,10 +2,12 @@ services:
|
|||||||
backend:
|
backend:
|
||||||
container_name: mayo-production-manager-backend
|
container_name: mayo-production-manager-backend
|
||||||
build:
|
build:
|
||||||
context: ./backend
|
context: ./backand
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
environment:
|
env_file:
|
||||||
NODE_ENV: production
|
- ./backand/.env
|
||||||
|
volumes:
|
||||||
|
- static_content:/app/staticfiles
|
||||||
ports:
|
ports:
|
||||||
- 7090:7090
|
- 7090:7090
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
@@ -17,6 +19,11 @@ services:
|
|||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
environment:
|
environment:
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
|
volumes:
|
||||||
|
- static_content:/static_django
|
||||||
ports:
|
ports:
|
||||||
- 7080:7080
|
- 7080:7080
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
static_content:
|
||||||
|
|||||||
@@ -30,41 +30,35 @@ http {
|
|||||||
listen 7080;
|
listen 7080;
|
||||||
server_name localhost;
|
server_name localhost;
|
||||||
|
|
||||||
root /usr/share/nginx/html;
|
# Serwowanie statycznych plików Django Admina
|
||||||
index index.html;
|
location /mayo-manager/static/ {
|
||||||
|
alias /static_django/;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Serwowanie aplikacji Vue
|
||||||
location /mayo-manager/ {
|
location /mayo-manager/ {
|
||||||
try_files $uri $uri/ /index.html;
|
alias /usr/share/nginx/html/;
|
||||||
|
try_files $uri $uri/ /mayo-manager/index.html;
|
||||||
}
|
}
|
||||||
|
|
||||||
location ~* \.(?:ico|css|js|gif|jpe?g|png|woff2?|eot|ttf|svg|map)$ {
|
# Proxy do API Django
|
||||||
expires 1y;
|
|
||||||
access_log off;
|
|
||||||
add_header Cache-Control "public, immutable";
|
|
||||||
add_header X-Content-Type-Options nosniff;
|
|
||||||
}
|
|
||||||
|
|
||||||
# location /assets/ {
|
|
||||||
# expires 1y;
|
|
||||||
# add_header Cache-Control "public, immutable";
|
|
||||||
# add_header X-Content-Type-Options nosniff;
|
|
||||||
# }
|
|
||||||
|
|
||||||
# BACKEND API
|
|
||||||
location /mayo-manager/api/ {
|
location /mayo-manager/api/ {
|
||||||
proxy_pass http://mayo-production-manager-backend:7090/;
|
proxy_pass http://mayo-production-manager-backend:7090/api/;
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
}
|
}
|
||||||
|
|
||||||
# DJANGO ADMIN
|
# Proxy do panelu admina Django
|
||||||
location /mayo-manager/admin/ {
|
location /mayo-manager/admin/ {
|
||||||
proxy_pass http://mayo-production-manager-backend:7090/admin/;
|
proxy_pass http://mayo-production-manager-backend:7090/admin/;
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
}
|
}
|
||||||
error_page 404 /index.html;
|
|
||||||
|
error_page 404 /mayo-manager/index.html;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6,6 +6,7 @@ import vueDevTools from 'vite-plugin-vue-devtools'
|
|||||||
|
|
||||||
// https://vite.dev/config/
|
// https://vite.dev/config/
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
|
base: '/mayo-manager/',
|
||||||
plugins: [
|
plugins: [
|
||||||
vue(),
|
vue(),
|
||||||
vueDevTools(),
|
vueDevTools(),
|
||||||
|
|||||||
Reference in New Issue
Block a user