mirror of
				https://github.com/prometheus/node_exporter.git
				synced 2025-08-20 18:33:52 -07:00 
			
		
		
		
	multi arch docker build
This commit is contained in:
		
							parent
							
								
									0f76c5f287
								
							
						
					
					
						commit
						87ccda9a31
					
				
							
								
								
									
										15
									
								
								Dockerfile.multiarch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								Dockerfile.multiarch
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,15 @@
 | 
				
			||||||
 | 
					FROM quay.io/prometheus/busybox:latest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ARG TARGETPLATFORM
 | 
				
			||||||
 | 
					ARG BUILDPLATFORM
 | 
				
			||||||
 | 
					ARG TARGETOS
 | 
				
			||||||
 | 
					ARG TARGETARCH
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LABEL maintainer="The Prometheus Authors <prometheus-developers@googlegroups.com>"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Copy the correct binary based on target architecture
 | 
				
			||||||
 | 
					COPY .build/${TARGETOS}-${TARGETARCH}/node_exporter /bin/node_exporter
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXPOSE      9100
 | 
				
			||||||
 | 
					USER        nobody
 | 
				
			||||||
 | 
					ENTRYPOINT  [ "/bin/node_exporter" ] 
 | 
				
			||||||
							
								
								
									
										47
									
								
								build-multiarch.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										47
									
								
								build-multiarch.sh
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,47 @@
 | 
				
			||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo "Building multi-architecture node_exporter with corrected approach..."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Create build directory
 | 
				
			||||||
 | 
					mkdir -p .build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Build for Linux AMD64 using local cross-compilation
 | 
				
			||||||
 | 
					echo "Building for linux/amd64..."
 | 
				
			||||||
 | 
					GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o .build/linux-amd64/node_exporter .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Build for Linux ARM64 using local cross-compilation
 | 
				
			||||||
 | 
					echo "Building for linux/arm64..."
 | 
				
			||||||
 | 
					GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -o .build/linux-arm64/node_exporter .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Create and use a new builder instance for multi-architecture builds
 | 
				
			||||||
 | 
					echo "Setting up Docker Buildx..."
 | 
				
			||||||
 | 
					docker buildx create --name multiarch-builder --use || true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Build multi-architecture image using buildx with the corrected Dockerfile
 | 
				
			||||||
 | 
					echo "Building multi-architecture image with buildx..."
 | 
				
			||||||
 | 
					docker buildx build \
 | 
				
			||||||
 | 
					    --platform linux/amd64,linux/arm64 \
 | 
				
			||||||
 | 
					    --tag ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/${AWS_ECR_NAMESPACE}/node-exporter:multiarch \
 | 
				
			||||||
 | 
					    --file Dockerfile.multiarch \
 | 
				
			||||||
 | 
					    --push \
 | 
				
			||||||
 | 
					    .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo ""
 | 
				
			||||||
 | 
					echo "Multi-architecture build completed successfully!"
 | 
				
			||||||
 | 
					echo ""
 | 
				
			||||||
 | 
					echo "Generated binaries:"
 | 
				
			||||||
 | 
					echo "  - .build/linux-amd64/node_exporter (Linux AMD64)"
 | 
				
			||||||
 | 
					echo "  - .build/linux-arm64/node_exporter (Linux ARM64)"
 | 
				
			||||||
 | 
					echo ""
 | 
				
			||||||
 | 
					echo "Generated multi-architecture Docker image:"
 | 
				
			||||||
 | 
					echo "  - ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/${AWS_ECR_NAMESPACE}/node-exporter:multiarch (supports both AMD64 and ARM64)"
 | 
				
			||||||
 | 
					echo ""
 | 
				
			||||||
 | 
					echo "Architecture verification:"
 | 
				
			||||||
 | 
					file .build/linux-amd64/node_exporter
 | 
				
			||||||
 | 
					file .build/linux-arm64/node_exporter
 | 
				
			||||||
 | 
					echo ""
 | 
				
			||||||
 | 
					echo "To test the multi-architecture image:"
 | 
				
			||||||
 | 
					echo "  docker pull ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/${AWS_ECR_NAMESPACE}/node-exporter:multiarch"
 | 
				
			||||||
 | 
					echo "  docker run --rm ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/${AWS_ECR_NAMESPACE}/node-exporter:multiarch --version" 
 | 
				
			||||||
		Loading…
	
		Reference in a new issue