Staged Docker builds for dev and prod
This commit is contained in:
		| @@ -1,5 +1,5 @@ | |||||||
| # pull official node image | # pull official node image | ||||||
| FROM node | FROM node AS dev | ||||||
|  |  | ||||||
| # define /app as working directory | # define /app as working directory | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
| @@ -13,4 +13,10 @@ RUN npm install | |||||||
| COPY . /app | COPY . /app | ||||||
|  |  | ||||||
| # launch node server | # launch node server | ||||||
|  | ENTRYPOINT npm run dev | ||||||
|  |  | ||||||
|  | # production | ||||||
|  | FROM node AS prod | ||||||
|  | WORKDIR /app | ||||||
|  | COPY --from=dev /app ./ | ||||||
| ENTRYPOINT npm run start | ENTRYPOINT npm run start | ||||||
| @@ -5,8 +5,8 @@ | |||||||
|   "main": "server.js", |   "main": "server.js", | ||||||
|   "scripts": { |   "scripts": { | ||||||
|     "test": "echo \"Error: no test specified\" && exit 1", |     "test": "echo \"Error: no test specified\" && exit 1", | ||||||
|     "start": "nodemon server.js -e ejs,js,css,html,jpg,png,scss", |     "dev": "nodemon server.js -e ejs,js,css,html,jpg,png,scss", | ||||||
|     "build": "cd frontend && npm install && npm run build" |     "prod": "node.js server.js" | ||||||
|   }, |   }, | ||||||
|   "keywords": [], |   "keywords": [], | ||||||
|   "author": "", |   "author": "", | ||||||
|   | |||||||
| @@ -1,9 +1,22 @@ | |||||||
| FROM node:16-alpine | FROM node AS dev | ||||||
|  |  | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
| EXPOSE 8080 | EXPOSE 8080 | ||||||
| CMD ["npm", "run", "dev"] |  | ||||||
|  |  | ||||||
| COPY package* ./ | COPY package* ./ | ||||||
| RUN npm install | RUN npm install | ||||||
| COPY . . | 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;"] | ||||||
							
								
								
									
										9
									
								
								frontend/nginx.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								frontend/nginx.conf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | server { | ||||||
|  |     listen       8080; | ||||||
|  |     server_name  _; | ||||||
|  |  | ||||||
|  |     location / { | ||||||
|  |         root   /usr/share/nginx/html; | ||||||
|  |         index  index.html index.htm; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -30,8 +30,7 @@ profiles: | |||||||
|         - image: harbor.k-space.ee/playground/log-viewer-backend |         - image: harbor.k-space.ee/playground/log-viewer-backend | ||||||
|           context: backend |           context: backend | ||||||
|           docker: |           docker: | ||||||
|             buildArgs: |             target: dev | ||||||
|               ENV: development |  | ||||||
|           sync: |           sync: | ||||||
|             manual: |             manual: | ||||||
|               - src: '**/*.js' |               - src: '**/*.js' | ||||||
| @@ -39,8 +38,7 @@ profiles: | |||||||
|         - image: harbor.k-space.ee/playground/log-viewer-frontend |         - image: harbor.k-space.ee/playground/log-viewer-frontend | ||||||
|           context: frontend |           context: frontend | ||||||
|           docker: |           docker: | ||||||
|             buildArgs: |             target: dev | ||||||
|               ENV: development |  | ||||||
|           sync: |           sync: | ||||||
|             manual: |             manual: | ||||||
|               - src: 'src/**/*.vue' |               - src: 'src/**/*.vue' | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user