Multistage Dockerfile

A dev és a prod is tud működni docker imagekből, de erre kellett két dockerfile
This commit is contained in:
2025-11-26 17:09:06 +01:00
parent c7210c6d80
commit a45ace4211
6 changed files with 65 additions and 7 deletions

View File

@@ -2,4 +2,6 @@ node_modules
npm-debug.log npm-debug.log
Dockerfile Dockerfile
docker-compose.yml docker-compose.yml
.env .env
dist
.git

2
.gitignore vendored
View File

@@ -2,7 +2,9 @@
# gitignore template for Vue.js projects # gitignore template for Vue.js projects
# #
# Recommended template: Node.gitignore # Recommended template: Node.gitignore
.git
dist
# TODO: where does this rule come from? # TODO: where does this rule come from?
docs/_book docs/_book

View File

@@ -1,4 +1,7 @@
FROM node:20-alpine # ================
# 1. BUILD STAGE
# ================
FROM node:20-alpine AS build
WORKDIR /usr/src/app WORKDIR /usr/src/app
@@ -6,6 +9,26 @@ COPY package*.json ./
RUN npm install RUN npm install
EXPOSE 5173 COPY . .
# A futtatási parancsot a compose adja ARG VITE_BACKEND_API_HOST=http://telefonkonyv-api
ARG VITE_BACKEND_API_PORT=3000
ENV VITE_BACKEND_API_HOST=${VITE_BACKEND_API_HOST}
ENV VITE_BACKEND_API_PORT=${VITE_BACKEND_API_PORT}
RUN npm run build
# =================
# 2. RUNTIME STAGE
# =================
FROM nginx:1.27-alpine
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=build /usr/src/app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

16
Dockerfile.dev Normal file
View File

@@ -0,0 +1,16 @@
FROM node:20-alpine
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 5173
# A futtatási parancsot a compose adja, de kell az alap is a k8s-hez
CMD ["npm", "run", "dev", "--", "--host", "0.0.0.0", "--port", "5173"]

View File

@@ -1,13 +1,15 @@
services: services:
frontend: frontend:
build: . build:
context: .
dockerfile: Dockerfile.dev
container_name: telefonkonyv-frontend container_name: telefonkonyv-frontend
restart: always restart: always
env_file: .env env_file: .env
environment: environment:
- CHOKIDAR_USEPOLLING=true - CHOKIDAR_USEPOLLING=true
- BACKEND_API_HOST=${BACKEND_API_HOST} - BACKEND_API_HOST=${VITE_BACKEND_API_HOST}
- BACKEND_API_PORT=${BACKEND_API_PORT} - BACKEND_API_PORT=${VITE_BACKEND_API_PORT}
ports: ports:
- "${FRONTEND_PORT:-5173}:5173" - "${FRONTEND_PORT:-5173}:5173"
volumes: volumes:

13
nginx.conf Normal file
View File

@@ -0,0 +1,13 @@
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.html;
# Statikus fájlok
location / {
try_files $uri $uri/ /index.html;
}
}