35 lines
		
	
	
		
			800 B
		
	
	
	
		
			Docker
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			800 B
		
	
	
	
		
			Docker
		
	
	
	
	
	
# dev stage
 | 
						|
FROM node:14-alpine as dev
 | 
						|
WORKDIR /app
 | 
						|
RUN apk update && apk add --no-cache python3 make gcc g++
 | 
						|
COPY package*.json ./
 | 
						|
RUN npm ci
 | 
						|
COPY . .
 | 
						|
 | 
						|
# build stage
 | 
						|
FROM dev as build
 | 
						|
RUN npx tsc && npm prune --production
 | 
						|
 | 
						|
# production stage
 | 
						|
FROM node:14-alpine
 | 
						|
WORKDIR /app
 | 
						|
 | 
						|
RUN printf "%b" '#!'"/bin/sh\n\
 | 
						|
set -e\n\
 | 
						|
if [ ! -z \"\$RUN_MIGRATIONS\" ]; then\n\
 | 
						|
    echo \"Running migrations.\"\n\
 | 
						|
    npm run knex:migrate:latest\n\
 | 
						|
fi\n\
 | 
						|
exec \"\$@\"\n" > docker-entrypoint.sh && chmod +x docker-entrypoint.sh
 | 
						|
 | 
						|
# Copy over production modules and dist folder
 | 
						|
COPY --from=build /app/package*.json ./
 | 
						|
COPY --from=build /app/node_modules ./node_modules
 | 
						|
COPY --from=build /app/dist ./dist
 | 
						|
COPY --from=build /app/db ./db
 | 
						|
 | 
						|
EXPOSE 4000
 | 
						|
 | 
						|
ENTRYPOINT [ "./docker-entrypoint.sh" ]
 | 
						|
CMD [ "node", "dist/main.js" ]
 |