diff --git a/connect_frontend/Dockerfile b/connect_frontend/Dockerfile new file mode 100644 index 0000000..7c4c3a7 --- /dev/null +++ b/connect_frontend/Dockerfile @@ -0,0 +1,25 @@ +# Build menu-app +FROM node:20-alpine AS menu-builder +WORKDIR /app/menu-app +COPY menu-app/package.json . +RUN npm install +COPY menu-app/ . +ARG VITE_CLOUD_URL= +ENV VITE_CLOUD_URL=$VITE_CLOUD_URL +RUN npm run build + +# Build manager-app +FROM node:20-alpine AS manager-builder +WORKDIR /app/manager-app +COPY manager-app/package.json . +RUN npm install +COPY manager-app/ . +ARG VITE_CLOUD_URL= +ENV VITE_CLOUD_URL=$VITE_CLOUD_URL +RUN npm run build + +# Serve both with nginx +FROM nginx:alpine +COPY --from=menu-builder /app/menu-app/dist /usr/share/nginx/html/menu +COPY --from=manager-builder /app/manager-app/dist /usr/share/nginx/html/manage +COPY nginx-connect.conf /etc/nginx/conf.d/default.conf diff --git a/connect_frontend/manager-app/Dockerfile b/connect_frontend/manager-app/Dockerfile new file mode 100644 index 0000000..82c5e1e --- /dev/null +++ b/connect_frontend/manager-app/Dockerfile @@ -0,0 +1,11 @@ +FROM node:20-alpine AS builder +WORKDIR /app +COPY package.json . +RUN npm install +COPY . . +ARG VITE_CLOUD_URL= +ENV VITE_CLOUD_URL=$VITE_CLOUD_URL +RUN npm run build + +FROM nginx:alpine +COPY --from=builder /app/dist /usr/share/nginx/html/manage diff --git a/connect_frontend/menu-app/Dockerfile b/connect_frontend/menu-app/Dockerfile new file mode 100644 index 0000000..084a16f --- /dev/null +++ b/connect_frontend/menu-app/Dockerfile @@ -0,0 +1,11 @@ +FROM node:20-alpine AS builder +WORKDIR /app +COPY package.json . +RUN npm install +COPY . . +ARG VITE_CLOUD_URL= +ENV VITE_CLOUD_URL=$VITE_CLOUD_URL +RUN npm run build + +FROM nginx:alpine +COPY --from=builder /app/dist /usr/share/nginx/html/menu diff --git a/connect_frontend/nginx-connect.conf b/connect_frontend/nginx-connect.conf new file mode 100644 index 0000000..b2cd6a9 --- /dev/null +++ b/connect_frontend/nginx-connect.conf @@ -0,0 +1,21 @@ +server { + listen 80; + + # Public menu SPA + location /menu/ { + alias /usr/share/nginx/html/menu/; + try_files $uri $uri/ /menu/index.html; + } + + # Remote manager SPA + location /manage/ { + alias /usr/share/nginx/html/manage/; + try_files $uri $uri/ /manage/index.html; + } + + # Health check + location /health { + return 200 'ok'; + add_header Content-Type text/plain; + } +} diff --git a/docker-compose.yml b/docker-compose.yml index 1c921fe..007b7f0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -17,5 +17,16 @@ services: ports: - "5175:80" restart: unless-stopped + depends_on: + - cloud_backend + + connect_frontend: + build: + context: ./connect_frontend + args: + VITE_CLOUD_URL: ${VITE_CLOUD_URL} + ports: + - "3100:80" + restart: unless-stopped depends_on: - cloud_backend \ No newline at end of file diff --git a/nginx-connect.conf b/nginx-connect.conf new file mode 100644 index 0000000..b2cd6a9 --- /dev/null +++ b/nginx-connect.conf @@ -0,0 +1,21 @@ +server { + listen 80; + + # Public menu SPA + location /menu/ { + alias /usr/share/nginx/html/menu/; + try_files $uri $uri/ /menu/index.html; + } + + # Remote manager SPA + location /manage/ { + alias /usr/share/nginx/html/manage/; + try_files $uri $uri/ /manage/index.html; + } + + # Health check + location /health { + return 200 'ok'; + add_header Content-Type text/plain; + } +}