41 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| FROM node:20.11-alpine3.18 as build
 | |
| 
 | |
| # Move files into the image and install
 | |
| WORKDIR /app
 | |
| 
 | |
| COPY ./bskyogcard/package.json ./
 | |
| COPY ./bskyogcard/yarn.lock ./
 | |
| RUN yarn install --frozen-lockfile
 | |
| 
 | |
| COPY ./bskyogcard ./
 | |
| 
 | |
| # build then prune dev deps
 | |
| RUN yarn install-fonts && yarn build
 | |
| RUN yarn install --production --ignore-scripts --prefer-offline
 | |
| 
 | |
| # Uses assets from build stage to reduce build size
 | |
| FROM node:20.11-alpine3.18
 | |
| 
 | |
| RUN apk add --update dumb-init
 | |
| 
 | |
| # Avoid zombie processes, handle signal forwarding
 | |
| ENTRYPOINT ["dumb-init", "--"]
 | |
| 
 | |
| WORKDIR /app
 | |
| COPY --from=build /app /app
 | |
| RUN mkdir /app/data && chown node /app/data
 | |
| 
 | |
| VOLUME /app/data
 | |
| EXPOSE 3000
 | |
| ENV CARD_PORT=3000
 | |
| ENV NODE_ENV=production
 | |
| # potential perf issues w/ io_uring on this version of node
 | |
| ENV UV_USE_IO_URING=0
 | |
| 
 | |
| # https://github.com/nodejs/docker-node/blob/master/docs/BestPractices.md#non-root-user
 | |
| USER node
 | |
| CMD ["node", "--heapsnapshot-signal=SIGUSR2", "--enable-source-maps", "dist/bin.js"]
 | |
| 
 | |
| LABEL org.opencontainers.image.source=https://github.com/bluesky-social/social-app
 | |
| LABEL org.opencontainers.image.description="Bsky Card Service"
 | |
| LABEL org.opencontainers.image.licenses=UNLICENSED
 |