[chore] Improvements in docker structure
This commit is contained in:
@@ -1,6 +1,31 @@
|
|||||||
from django.urls import include, path
|
from django.urls import include, path
|
||||||
|
from drf_yasg import openapi
|
||||||
|
from drf_yasg.views import get_schema_view
|
||||||
|
from rest_framework import permissions
|
||||||
|
|
||||||
|
schema_view = get_schema_view(
|
||||||
|
openapi.Info(title="SkillHub API", default_version="v1"),
|
||||||
|
public=True,
|
||||||
|
permission_classes=(permissions.AllowAny,),
|
||||||
|
)
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path("ping", include("api.ping.urls")),
|
path("ping", include("api.ping.urls")),
|
||||||
path("auth", include("api.users.urls")),
|
path("auth", include("api.users.urls")),
|
||||||
|
# API documentation
|
||||||
|
path(
|
||||||
|
"swagger<format>/",
|
||||||
|
schema_view.without_ui(cache_timeout=0),
|
||||||
|
name="schema-json",
|
||||||
|
),
|
||||||
|
path(
|
||||||
|
"swagger/",
|
||||||
|
schema_view.with_ui("swagger", cache_timeout=0),
|
||||||
|
name="schema-swagger-ui",
|
||||||
|
),
|
||||||
|
path(
|
||||||
|
"redoc/",
|
||||||
|
schema_view.with_ui("redoc", cache_timeout=0),
|
||||||
|
name="schema-redoc",
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,16 +1,6 @@
|
|||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.urls import include, path
|
from django.urls import include, path
|
||||||
from drf_yasg import openapi
|
|
||||||
from drf_yasg.views import get_schema_view
|
|
||||||
from rest_framework import permissions
|
|
||||||
|
|
||||||
schema_view = get_schema_view(
|
|
||||||
openapi.Info(title="SkillHub API", default_version="v1"),
|
|
||||||
public=True,
|
|
||||||
permission_classes=(permissions.AllowAny,),
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
# Built-in urls
|
# Built-in urls
|
||||||
@@ -22,22 +12,6 @@ urlpatterns = [
|
|||||||
namespace="rest_framework",
|
namespace="rest_framework",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
# API documentation
|
|
||||||
path(
|
|
||||||
"swagger<format>/",
|
|
||||||
schema_view.without_ui(cache_timeout=0),
|
|
||||||
name="schema-json",
|
|
||||||
),
|
|
||||||
path(
|
|
||||||
"swagger/",
|
|
||||||
schema_view.with_ui("swagger", cache_timeout=0),
|
|
||||||
name="schema-swagger-ui",
|
|
||||||
),
|
|
||||||
path(
|
|
||||||
"redoc/",
|
|
||||||
schema_view.with_ui("redoc", cache_timeout=0),
|
|
||||||
name="schema-redoc",
|
|
||||||
),
|
|
||||||
# API
|
# API
|
||||||
path("api/", include("api.urls")),
|
path("api/", include("api.urls")),
|
||||||
]
|
]
|
||||||
|
|||||||
+22
-7
@@ -21,6 +21,9 @@ services:
|
|||||||
backend:
|
backend:
|
||||||
build: ./backend
|
build: ./backend
|
||||||
container_name: backend
|
container_name: backend
|
||||||
|
volumes:
|
||||||
|
- media_volume:/app/project/media/
|
||||||
|
- static_volume:/app/project/static/
|
||||||
depends_on:
|
depends_on:
|
||||||
postgres:
|
postgres:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
@@ -35,18 +38,28 @@ services:
|
|||||||
DJANGO_DEBUG: ${DJANGO_DEBUG:-false}
|
DJANGO_DEBUG: ${DJANGO_DEBUG:-false}
|
||||||
DJANGO_ALLOWED_HOSTS: ${DJANGO_ALLOWED_HOSTS:-*}
|
DJANGO_ALLOWED_HOSTS: ${DJANGO_ALLOWED_HOSTS:-*}
|
||||||
DJANGO_INTERNAL_IPS: ${DJANGO_INTERNAL_IPS:-127.0.0.1}
|
DJANGO_INTERNAL_IPS: ${DJANGO_INTERNAL_IPS:-127.0.0.1}
|
||||||
command: ["sh", "-c", "cd project && python manage.py migrate && gunicorn config.wsgi:application --bind 0.0.0.0:8080"]
|
expose:
|
||||||
ports:
|
- 8080
|
||||||
- 8080:8080
|
command:
|
||||||
|
[
|
||||||
|
"sh",
|
||||||
|
"-c",
|
||||||
|
"cd project && python manage.py collectstatic --noinput && python manage.py migrate && gunicorn config.wsgi:application --bind 0.0.0.0:8080",
|
||||||
|
]
|
||||||
|
|
||||||
frontend:
|
nginx:
|
||||||
container_name: frontend
|
container_name: nginx
|
||||||
build:
|
build:
|
||||||
context: ./frontend
|
context: ./frontend
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
ports:
|
ports:
|
||||||
- "3000:3000"
|
- "80:80"
|
||||||
restart: always
|
volumes:
|
||||||
|
- ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
|
||||||
|
- media_volume:/var/html/media/
|
||||||
|
- static_volume:/var/html/static/
|
||||||
|
depends_on:
|
||||||
|
- backend
|
||||||
|
|
||||||
pgadmin:
|
pgadmin:
|
||||||
image: dpage/pgadmin4:8.4
|
image: dpage/pgadmin4:8.4
|
||||||
@@ -66,3 +79,5 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
postgres_data:
|
postgres_data:
|
||||||
pgadmin_data:
|
pgadmin_data:
|
||||||
|
media_volume:
|
||||||
|
static_volume:
|
||||||
|
|||||||
@@ -15,5 +15,3 @@ RUN npm run build
|
|||||||
FROM nginx:stable-alpine3.17-slim
|
FROM nginx:stable-alpine3.17-slim
|
||||||
|
|
||||||
COPY --from=builder /app/dist /usr/share/nginx/html
|
COPY --from=builder /app/dist /usr/share/nginx/html
|
||||||
|
|
||||||
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
server {
|
|
||||||
listen 3000;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
root /usr/share/nginx/html/;
|
|
||||||
include /etc/nginx/mime.types;
|
|
||||||
try_files $uri $uri/ /index.html;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
|
||||||
|
server_tokens off;
|
||||||
|
|
||||||
|
location /api/ {
|
||||||
|
proxy_pass http://backend:8080/api/;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_redirect off;
|
||||||
|
}
|
||||||
|
location / {
|
||||||
|
root /usr/share/nginx/html/;
|
||||||
|
index index.html;
|
||||||
|
try_files $uri $uri/ /index.html;
|
||||||
|
}
|
||||||
|
location /media/ {
|
||||||
|
root /var/html/;
|
||||||
|
}
|
||||||
|
location /static/ {
|
||||||
|
root /var/html/;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user