mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	## About the changes Reduce the build time of OSS docker image from [~30m](https://github.com/Unleash/unleash/actions/workflows/docker_publish.yaml) to [under 15m](https://github.com/Unleash/unleash/actions/runs/5222180536/jobs/9427342758) 1. Build frontend outside docker multiplatform. 2. Allow `frontend/build` to be copied to the image by removing this from `.dockerignore` 3. Run with `--ignore-scripts` to avoid building the frontend on the `prepare` script, but this requires us to run all the prepare scripts manually (except the frontend build). **Note:** we need to build frontend in the `prepare` script to be able to have source code dependencies ## Manual Testing Manually downloaded from https://hub.docker.com/r/unleashorg/unleash-server/tags?page=1 and compared both `unleash` folders from main and the version built with the new process https://github.com/Unleash/unleash/actions/runs/5223078089/jobs/9429430190#step:5:48  No major difference was spotted (only expected changes due to development done in main) **Command used to extract the contents:** ``` cd /tmp mkdir main && cd main docker pull unleashorg/unleash-server:main-edge-18-alpine docker export $(docker create unleashorg/unleash-server:main-edge-18-alpine) > container.tar && tar xvf container.tar mkdir ../new-process && cd ../new-process docker pull unleashorg/unleash-server:sha-ccac902-18-alpine docker export $(docker create unleashorg/unleash-server:sha-ccac902-18-alpine) > container.tar && tar xvf container.tar meld ./unleash ../main/unleash ```
		
			
				
	
	
		
			37 lines
		
	
	
		
			723 B
		
	
	
	
		
			Docker
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			723 B
		
	
	
	
		
			Docker
		
	
	
	
	
	
| ARG NODE_VERSION=18-alpine
 | |
| 
 | |
| FROM node:$NODE_VERSION as builder
 | |
| 
 | |
| WORKDIR /unleash
 | |
| 
 | |
| COPY . /unleash
 | |
| 
 | |
| RUN yarn config set network-timeout 300000
 | |
| 
 | |
| RUN yarn install --frozen-lockfile --ignore-scripts && yarn prepare:backend && yarn local:package
 | |
| 
 | |
| # frontend/build should already exist (it needs to be built in the local filesystem
 | |
| RUN mkdir -p /unleash/build/frontend && mv /unleash/frontend/build /unleash/build/frontend/build
 | |
| 
 | |
| WORKDIR /unleash/docker
 | |
| 
 | |
| RUN yarn install --frozen-lockfile --production=true
 | |
| 
 | |
| FROM node:$NODE_VERSION
 | |
| 
 | |
| ENV NODE_ENV production
 | |
| 
 | |
| ENV TZ UTC
 | |
| 
 | |
| WORKDIR /unleash
 | |
| 
 | |
| COPY --from=builder /unleash/docker /unleash
 | |
| 
 | |
| RUN rm -rf /usr/local/lib/node_modules/npm/
 | |
| 
 | |
| EXPOSE 4242
 | |
| 
 | |
| USER node
 | |
| 
 | |
| CMD ["node", "index.js"]
 |