mirror of
				https://github.com/teddysun/across.git
				synced 2025-10-31 00:35:35 +08:00 
			
		
		
		
	Added CentOS RPM package building environment
Signed-off-by: Teddysun <i@teddysun.com>
This commit is contained in:
		
							
								
								
									
										35
									
								
								docker/rpmbuild/Dockerfile.centos7
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								docker/rpmbuild/Dockerfile.centos7
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | |||||||
|  | # Dockerfile for build RPM packages. | ||||||
|  | # Copyright (C) 2021 Teddysun <i@teddysun.com> | ||||||
|  |  | ||||||
|  | FROM --platform=${TARGETPLATFORM} centos:7 | ||||||
|  | LABEL maintainer="Teddysun <i@teddysun.com>" | ||||||
|  |  | ||||||
|  | RUN yum install -y yum-utils epel-release centos-release-scl-rh && \ | ||||||
|  | 	yum-config-manager --enable epel && \ | ||||||
|  | 	yum install -y tar wget git tree gcc gcc-c++ \ | ||||||
|  | 		sudo net-tools make cmake zstd libzstd \ | ||||||
|  | 		python bash coreutils diffutils patch \ | ||||||
|  | 		rpm-build rpm-devel rpmlint rpmdevtools \ | ||||||
|  | 		devtoolset-9-gcc devtoolset-9-binutils devtoolset-9-runtime \ | ||||||
|  | 		scl-utils asciidoc bison elfutils-libelf-devel m4 newt-devel \ | ||||||
|  | 		openssl-devel openssl xmlto audit-libs-devel binutils-devel elfutils-devel \ | ||||||
|  | 		gettext java-1.8.0-openjdk-devel libcap-devel numactl-devel python-devel python3 \ | ||||||
|  | 		slang-devel xz-devel zlib-devel ncurses-devel pciutils-devel perl-ExtUtils-Embed && \ | ||||||
|  | 	yum clean all && rm -rf /var/cache/yum /var/lib/rpm/__db* | ||||||
|  |  | ||||||
|  | RUN useradd builder -u 1000 -m -G users,wheel && \ | ||||||
|  | 	echo "builder ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers && \ | ||||||
|  | 	echo "# macros"                           >  /home/builder/.rpmmacros && \ | ||||||
|  | 	echo "%_topdir    /home/builder/rpmbuild" >> /home/builder/.rpmmacros && \ | ||||||
|  | 	echo "%_sourcedir %{_topdir}"             >> /home/builder/.rpmmacros && \ | ||||||
|  | 	echo "%_builddir  %{_topdir}"             >> /home/builder/.rpmmacros && \ | ||||||
|  | 	echo "%_specdir   %{_topdir}"             >> /home/builder/.rpmmacros && \ | ||||||
|  | 	echo "%_rpmdir    %{_topdir}"             >> /home/builder/.rpmmacros && \ | ||||||
|  | 	echo "%_srcrpmdir %{_topdir}"             >> /home/builder/.rpmmacros && \ | ||||||
|  | 	mkdir -p /home/builder/rpmbuild && \ | ||||||
|  | 	chown -R builder /home/builder | ||||||
|  |  | ||||||
|  | USER builder | ||||||
|  | VOLUME /home/builder | ||||||
|  | WORKDIR /home/builder/rpmbuild | ||||||
|  | CMD ["/bin/bash"] | ||||||
							
								
								
									
										36
									
								
								docker/rpmbuild/Dockerfile.centos8
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								docker/rpmbuild/Dockerfile.centos8
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | |||||||
|  | # Dockerfile for build RPM packages. | ||||||
|  | # Copyright (C) 2021 Teddysun <i@teddysun.com> | ||||||
|  |  | ||||||
|  | FROM --platform=${TARGETPLATFORM} centos:8 | ||||||
|  | LABEL maintainer="Teddysun <i@teddysun.com>" | ||||||
|  |  | ||||||
|  | RUN yum install -y yum-utils epel-release && \ | ||||||
|  | 	yum-config-manager --enable epel && \ | ||||||
|  | 	rpm -e --nodeps coreutils-single && \ | ||||||
|  | 	yum install -y tar wget git tree gcc gcc-c++ \ | ||||||
|  | 		sudo net-tools make cmake zstd libzstd \ | ||||||
|  | 		bash coreutils diffutils patch \ | ||||||
|  | 		rpm-build rpm-devel rpmlint rpmdevtools \ | ||||||
|  | 		asciidoc audit-libs-devel binutils-devel flex \ | ||||||
|  | 		libcap-devel newt-devel pciutils-devel perl-generators \ | ||||||
|  | 		python3 python3-devel python3-docutils rsync xmlto bc bison \ | ||||||
|  | 		java-devel ncurses-devel numactl-devel openssl-devel perl-devel \ | ||||||
|  | 		elfutils-devel xz-devel perl-ExtUtils-Embed && \ | ||||||
|  | 	yum clean all && rm -rf /var/cache/dnf /var/lib/rpm/__db* | ||||||
|  |  | ||||||
|  | RUN useradd builder -u 1000 -m -G users,wheel && \ | ||||||
|  | 	echo "builder ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers && \ | ||||||
|  | 	echo "# macros"                           >  /home/builder/.rpmmacros && \ | ||||||
|  | 	echo "%_topdir    /home/builder/rpmbuild" >> /home/builder/.rpmmacros && \ | ||||||
|  | 	echo "%_sourcedir %{_topdir}"             >> /home/builder/.rpmmacros && \ | ||||||
|  | 	echo "%_builddir  %{_topdir}"             >> /home/builder/.rpmmacros && \ | ||||||
|  | 	echo "%_specdir   %{_topdir}"             >> /home/builder/.rpmmacros && \ | ||||||
|  | 	echo "%_rpmdir    %{_topdir}"             >> /home/builder/.rpmmacros && \ | ||||||
|  | 	echo "%_srcrpmdir %{_topdir}"             >> /home/builder/.rpmmacros && \ | ||||||
|  | 	mkdir -p /home/builder/rpmbuild && \ | ||||||
|  | 	chown -R builder /home/builder | ||||||
|  |  | ||||||
|  | USER builder | ||||||
|  | VOLUME /home/builder | ||||||
|  | WORKDIR /home/builder/rpmbuild | ||||||
|  | CMD ["/bin/bash"] | ||||||
							
								
								
									
										65
									
								
								docker/rpmbuild/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								docker/rpmbuild/README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | |||||||
|  | ## CentOS RPM package building environment by Teddysun | ||||||
|  |  | ||||||
|  | This docker image can be used to build RPM packages. | ||||||
|  |  | ||||||
|  | For more information on docker and containerization technologies, refer to [official document][1]. | ||||||
|  |  | ||||||
|  | ## Supported tags and respective `Dockerfile` links | ||||||
|  |  | ||||||
|  | - `latest`, `8` [*(Dockerfile)*][2] | ||||||
|  | - `7` [*(Dockerfile)*][3] | ||||||
|  |  | ||||||
|  | ### Reference | ||||||
|  |  | ||||||
|  | - Supported architectures ([*more info*][4]): `amd64`, `arm64v8` | ||||||
|  |  | ||||||
|  | ## Integration | ||||||
|  |  | ||||||
|  | RPMs will be built in `/home/builder/rpmbuild` folder, which should contain source archives, patches and built RPM/SRPM files. | ||||||
|  |  | ||||||
|  | ## Prepare the host | ||||||
|  |  | ||||||
|  | If you need to install docker by yourself, follow the [official installation guide][5]. | ||||||
|  |  | ||||||
|  | ## User Account and Root Access | ||||||
|  |  | ||||||
|  | The `builder` user (UID 1000) is a member of users and wheel, and has password-less sudo as any user, any group. | ||||||
|  |  | ||||||
|  | ## Pull the image | ||||||
|  |  | ||||||
|  | For CentOS 7 | ||||||
|  |  | ||||||
|  | ```bash | ||||||
|  | $ docker pull teddysun/rpmbuild:7 | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | For CentOS 8 | ||||||
|  |  | ||||||
|  | ```bash | ||||||
|  | $ docker pull teddysun/rpmbuild:8 | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | It can be found at [Docker Hub][6]. | ||||||
|  |  | ||||||
|  | ## Start a container | ||||||
|  |  | ||||||
|  | There is an example to start a container for CentOS 7 like below: | ||||||
|  |  | ||||||
|  | ```bash | ||||||
|  | $ mkdir -m 777 -p /opt/builder7 | ||||||
|  | $ docker run -it --rm --name rpmbuild7 -v /opt/builder7:/home/builder/rpmbuild teddysun/rpmbuild:7 | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | There is an example to start a container for CentOS 8 like below: | ||||||
|  |  | ||||||
|  | ```bash | ||||||
|  | $ mkdir -m 777 -p /opt/builder8 | ||||||
|  | $ docker run -it --rm --name rpmbuild8 -v /opt/builder8:/home/builder/rpmbuild teddysun/rpmbuild:8 | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | [1]: https://docs.docker.com/ | ||||||
|  | [2]: https://github.com/teddysun/across/blob/master/docker/rpmbuild/Dockerfile.centos8 | ||||||
|  | [3]: https://github.com/teddysun/across/blob/master/docker/rpmbuild/Dockerfile.centos7 | ||||||
|  | [4]: https://github.com/docker-library/official-images#architectures-other-than-amd64 | ||||||
|  | [5]: https://docs.docker.com/install/ | ||||||
|  | [6]: https://hub.docker.com/r/teddysun/rpmbuild/ | ||||||
		Reference in New Issue
	
	Block a user