From 693ab863c24bc6ad5d2ac19a5ce7b80174153e03 Mon Sep 17 00:00:00 2001 From: Erki Aas Date: Tue, 11 Oct 2022 16:24:15 +0300 Subject: [PATCH] Staged Docker builds for dev and prod --- backend/Dockerfile | 8 +++++++- backend/package.json | 4 ++-- frontend/Dockerfile | 17 +++++++++++++++-- frontend/nginx.conf | 9 +++++++++ skaffold.yaml | 6 ++---- 5 files changed, 35 insertions(+), 9 deletions(-) create mode 100644 frontend/nginx.conf diff --git a/backend/Dockerfile b/backend/Dockerfile index 8a1170c..25528cb 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,5 +1,5 @@ # pull official node image -FROM node +FROM node AS dev # define /app as working directory WORKDIR /app @@ -13,4 +13,10 @@ RUN npm install COPY . /app # launch node server +ENTRYPOINT npm run dev + +# production +FROM node AS prod +WORKDIR /app +COPY --from=dev /app ./ ENTRYPOINT npm run start \ No newline at end of file diff --git a/backend/package.json b/backend/package.json index f8b3bbb..21af29f 100644 --- a/backend/package.json +++ b/backend/package.json @@ -5,8 +5,8 @@ "main": "server.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", - "start": "nodemon server.js -e ejs,js,css,html,jpg,png,scss", - "build": "cd frontend && npm install && npm run build" + "dev": "nodemon server.js -e ejs,js,css,html,jpg,png,scss", + "prod": "node.js server.js" }, "keywords": [], "author": "", diff --git a/frontend/Dockerfile b/frontend/Dockerfile index e6260a3..95b823a 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -1,9 +1,22 @@ -FROM node:16-alpine +FROM node AS dev WORKDIR /app EXPOSE 8080 -CMD ["npm", "run", "dev"] COPY package* ./ RUN npm install COPY . . + +ENTRYPOINT ["npm", "run", "dev"] + +# builder +FROM dev AS builder +RUN npm run build + +# serve +FROM nginx AS prod +WORKDIR /usr/share/nginx/html +RUN rm -rf ./* +COPY ./nginx.conf /etc/nginx/conf.d/default.conf +COPY --from=builder /app/dist . +ENTRYPOINT ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/frontend/nginx.conf b/frontend/nginx.conf new file mode 100644 index 0000000..8aaaf1f --- /dev/null +++ b/frontend/nginx.conf @@ -0,0 +1,9 @@ +server { + listen 8080; + server_name _; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + } +} diff --git a/skaffold.yaml b/skaffold.yaml index fd9eb5e..ba5f52d 100644 --- a/skaffold.yaml +++ b/skaffold.yaml @@ -30,8 +30,7 @@ profiles: - image: harbor.k-space.ee/playground/log-viewer-backend context: backend docker: - buildArgs: - ENV: development + target: dev sync: manual: - src: '**/*.js' @@ -39,8 +38,7 @@ profiles: - image: harbor.k-space.ee/playground/log-viewer-frontend context: frontend docker: - buildArgs: - ENV: development + target: dev sync: manual: - src: 'src/**/*.vue'