mirror of
				https://github.com/TheLartians/ModernCppStarter.git
				synced 2025-10-31 02:01:33 +01:00 
			
		
		
		
	add docker multistage build
This commit is contained in:
		
							parent
							
								
									f0fe8d1cf6
								
							
						
					
					
						commit
						00008c553d
					
				
					 2 changed files with 69 additions and 0 deletions
				
			
		
							
								
								
									
										31
									
								
								.github/workflows/docker.yml
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								.github/workflows/docker.yml
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,31 @@ | ||||||
|  | name: Docker | ||||||
|  | 
 | ||||||
|  | on: | ||||||
|  |   push: | ||||||
|  |     branches: | ||||||
|  |       - master | ||||||
|  |       - main | ||||||
|  |       - add-docker-build | ||||||
|  |   pull_request: | ||||||
|  |     branches: | ||||||
|  |       - master | ||||||
|  |       - main | ||||||
|  | 
 | ||||||
|  | jobs: | ||||||
|  |   build: | ||||||
|  |     name: Build docker images | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     steps: | ||||||
|  |       - uses: actions/checkout@v2 | ||||||
|  | 
 | ||||||
|  |       - name: build-test-image | ||||||
|  |         run: docker build -f ./docker/Dockerfile -t modern-cpp-starter/greeter-test:1.0 --target test . | ||||||
|  | 
 | ||||||
|  |       - name: build-app-image | ||||||
|  |         run: docker build -f ./docker/Dockerfile -t modern-cpp-starter/greeter-app:1.0 . | ||||||
|  | 
 | ||||||
|  |       - name: run-test-image | ||||||
|  |         run: docker run modern-cpp-starter/greeter-test:1.0 | ||||||
|  | 
 | ||||||
|  |       - name: run-app-image | ||||||
|  |         run: docker run modern-cpp-starter/greeter-app:1.0 | ||||||
							
								
								
									
										38
									
								
								docker/Dockerfile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								docker/Dockerfile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,38 @@ | ||||||
|  | FROM ubuntu:20.04 as build | ||||||
|  | # install dev tools | ||||||
|  | ENV DEBIAN_FRONTEND=noninteractive | ||||||
|  | RUN set -eux; \ | ||||||
|  |     apt-get update; \ | ||||||
|  |     apt-get install -y --no-install-recommends \ | ||||||
|  |     ca-certificates \ | ||||||
|  |     make \ | ||||||
|  |     cmake \ | ||||||
|  |     git \ | ||||||
|  |     gcc \ | ||||||
|  |     g++ \ | ||||||
|  |     ; \ | ||||||
|  |     rm -rf /var/lib/apt/lists/* | ||||||
|  | # build in release mode | ||||||
|  | WORKDIR /build-all | ||||||
|  | COPY ./all ./all | ||||||
|  | COPY ./cmake ./cmake | ||||||
|  | COPY ./documentation ./documentation | ||||||
|  | COPY ./include ./include | ||||||
|  | COPY ./source ./source | ||||||
|  | COPY ./standalone ./standalone | ||||||
|  | COPY ./test ./test | ||||||
|  | COPY ./CMakeLists.txt . | ||||||
|  | RUN cmake -S all -B build -D CMAKE_BUILD_TYPE=Release | ||||||
|  | RUN cmake --build build | ||||||
|  | 
 | ||||||
|  | # make a test image - could also be done directly from/in the build image | ||||||
|  | FROM ubuntu:20.04 as test | ||||||
|  | WORKDIR /test | ||||||
|  | COPY --from=build /build-all/build/test/GreeterTests ./ | ||||||
|  | CMD ["./GreeterTests"] | ||||||
|  | 
 | ||||||
|  | # make an image to deploy our 'app' | ||||||
|  | FROM ubuntu:20.04 as deploy | ||||||
|  | WORKDIR /app | ||||||
|  | COPY --from=build /build-all/build/standalone/Greeter ./ | ||||||
|  | CMD ["./Greeter"] | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue