41 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
# Typescript Build
 | 
						|
FROM registry.odit.services/hub/library/node:14.15.1-alpine3.12
 | 
						|
WORKDIR /app
 | 
						|
COPY package.json ./
 | 
						|
RUN npm i -g pnpm
 | 
						|
RUN pnpm i
 | 
						|
COPY tsconfig.json ./
 | 
						|
COPY src ./src
 | 
						|
RUN pnpm run build
 | 
						|
# final image
 | 
						|
FROM registry.odit.services/hub/library/alpine:3.13.1
 | 
						|
WORKDIR /app
 | 
						|
RUN apk add --no-cache \
 | 
						|
      chromium \
 | 
						|
      nss \
 | 
						|
      freetype \
 | 
						|
      freetype-dev \
 | 
						|
      harfbuzz \
 | 
						|
      ca-certificates \
 | 
						|
      ttf-freefont \
 | 
						|
      nodejs \
 | 
						|
      yarn \
 | 
						|
      font-noto-emoji \
 | 
						|
      && apk add wqy-zenhei --update-cache --repository https://nl.alpinelinux.org/alpine/edge/testing
 | 
						|
 | 
						|
# Tell Puppeteer to skip installing Chrome. We'll be using the installed package.
 | 
						|
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
 | 
						|
    PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
 | 
						|
 | 
						|
RUN addgroup -S pptruser && adduser -S -g pptruser pptruser \
 | 
						|
    && mkdir -p /home/pptruser/Downloads /app \
 | 
						|
    && chown -R pptruser:pptruser /home/pptruser \
 | 
						|
    && chown -R pptruser:pptruser /app
 | 
						|
 | 
						|
# Run everything after as non-privileged user.
 | 
						|
USER pptruser
 | 
						|
 | 
						|
COPY package.json ./
 | 
						|
RUN yarn
 | 
						|
COPY --from=0 /app/dist app
 | 
						|
ENTRYPOINT ["node", "app/app.js"] |