mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-10-22 04:18:53 +00:00
rootfs: Add support to create dockerfiles based on templates
To simplify maintaince, create dockerfiles based on templates. This way when golang version is updated it will be done in one place versions.txt. This also allow to allways intall the same version of golang in any dockerfile. Signed-off-by: Jose Carlos Venegas Munoz <jose.carlos.venegas.munoz@intel.com>
This commit is contained in:
1
rootfs-builder/.gitignore
vendored
Normal file
1
rootfs-builder/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
Dockerfile
|
@@ -1,7 +0,0 @@
|
||||
FROM centos:7
|
||||
|
||||
ADD https://storage.googleapis.com/golang/go1.9.2.linux-amd64.tar.gz /tmp
|
||||
RUN tar -C /usr/ -xzf /tmp/go1.9.2.linux-amd64.tar.gz
|
||||
RUN yum install -y make
|
||||
ENV GOROOT=/usr/go
|
||||
ENV PATH=$PATH:$GOROOT/bin:$GOPATH/bin
|
6
rootfs-builder/centos/Dockerfile.in
Normal file
6
rootfs-builder/centos/Dockerfile.in
Normal file
@@ -0,0 +1,6 @@
|
||||
From centos:@OS_VERSION@
|
||||
|
||||
RUN yum -y update && yum install -y git make gcc
|
||||
|
||||
# This will install the proper golang to build Kata components
|
||||
@INSTALL_GO@
|
@@ -1,3 +0,0 @@
|
||||
From fedora:27
|
||||
|
||||
RUN dnf -y update && dnf install -y git golang systemd pkgconfig
|
6
rootfs-builder/clearlinux/Dockerfile.in
Normal file
6
rootfs-builder/clearlinux/Dockerfile.in
Normal file
@@ -0,0 +1,6 @@
|
||||
From fedora:27
|
||||
|
||||
RUN dnf -y update && dnf install -y git systemd pkgconfig gcc
|
||||
|
||||
# This will install the proper golang to build Kata components
|
||||
@INSTALL_GO@
|
@@ -1,7 +0,0 @@
|
||||
FROM euleros:2.2
|
||||
|
||||
ADD https://storage.googleapis.com/golang/go1.9.2.linux-amd64.tar.gz /tmp
|
||||
RUN tar -C /usr/ -xzf /tmp/go1.9.2.linux-amd64.tar.gz
|
||||
RUN yum install -y make
|
||||
ENV GOROOT=/usr/go
|
||||
ENV PATH=$PATH:$GOROOT/bin:$GOPATH/bin
|
5
rootfs-builder/euleros/Dockerfile.in
Normal file
5
rootfs-builder/euleros/Dockerfile.in
Normal file
@@ -0,0 +1,5 @@
|
||||
FROM euleros:@OS_VERSION@
|
||||
|
||||
RUN yum -y update && yum install -y yum git make gcc
|
||||
# This will install the proper golang to build Kata components
|
||||
@INSTALL_GO@
|
@@ -6,7 +6,7 @@
|
||||
# Remove them or add more
|
||||
|
||||
# EulerOS Version
|
||||
OS_VERSION=${OS_VERSION:-2}
|
||||
OS_VERSION=${OS_VERSION:-2.2}
|
||||
|
||||
#Mandatory Packages that must be installed
|
||||
# systemd: An init system that will start kata-agent
|
||||
|
@@ -27,8 +27,8 @@ logfile=/var/log/yum-euleros.log
|
||||
exactarch=1
|
||||
|
||||
[Base]
|
||||
name=EulerOS-2.2 Base
|
||||
baseurl=http://developer.huawei.com/ict/site-euleros/euleros/repo/yum/2.2/os/x86_64/
|
||||
name=EulerOS-${OS_VERSION} Base
|
||||
baseurl=http://developer.huawei.com/ict/site-euleros/euleros/repo/yum/${OS_VERSION}/os/x86_64/
|
||||
enabled=1
|
||||
gpgcheck=1
|
||||
gpgkey=file://${CONFIG_DIR}/RPM-GPG-KEY-EulerOS
|
||||
|
@@ -1,3 +0,0 @@
|
||||
From fedora:27
|
||||
|
||||
RUN dnf -y update && dnf install -y git golang redhat-release systemd pkgconfig
|
6
rootfs-builder/fedora/Dockerfile.in
Normal file
6
rootfs-builder/fedora/Dockerfile.in
Normal file
@@ -0,0 +1,6 @@
|
||||
From fedora:@OS_VERSION@
|
||||
|
||||
RUN dnf -y update && dnf install -y git redhat-release systemd pkgconfig gcc
|
||||
|
||||
# This will install the proper golang to build Kata components
|
||||
@INSTALL_GO@
|
@@ -12,6 +12,9 @@ ROOTFS_DIR=${ROOTFS_DIR:-${PWD}/rootfs}
|
||||
AGENT_VERSION=${AGENT_VERSION:-master}
|
||||
GO_AGENT_PKG=${GO_AGENT_PKG:-github.com/kata-containers/agent}
|
||||
AGENT_BIN=${AGENT_BIN:-kata-agent}
|
||||
#Load default vesions for golang and other componets
|
||||
source "${script_dir}/versions.txt"
|
||||
|
||||
# Name of file that will implement build_rootfs
|
||||
typeset -r LIB_SH="rootfs_lib.sh"
|
||||
|
||||
@@ -79,6 +82,29 @@ check_function_exist() {
|
||||
[ "$(type -t ${function_name})" == "function" ] || die "${function_name} function was not defined"
|
||||
}
|
||||
|
||||
generate_dockerfile() {
|
||||
dir="$1"
|
||||
|
||||
readonly install_go="
|
||||
ADD https://storage.googleapis.com/golang/go${GO_VERSION}.linux-amd64.tar.gz /tmp
|
||||
RUN tar -C /usr/ -xzf /tmp/go${GO_VERSION}.linux-amd64.tar.gz
|
||||
ENV GOROOT=/usr/go
|
||||
ENV PATH=\$PATH:\$GOROOT/bin:\$GOPATH/bin
|
||||
"
|
||||
|
||||
readonly dockerfile_template="Dockerfile.in"
|
||||
[ -d "${dir}" ] || die "${dir}: not a directory"
|
||||
pushd ${dir}
|
||||
[ -f "${dockerfile_template}" ] || die "${dockerfile_template}: file not found"
|
||||
set -x
|
||||
sed \
|
||||
-e "s|@OS_VERSION@|${OS_VERSION}|g" \
|
||||
-e "s|@INSTALL_GO@|${install_go//$'\n'/\\n}|g" \
|
||||
${dockerfile_template} > Dockerfile
|
||||
set +x
|
||||
popd
|
||||
}
|
||||
|
||||
|
||||
while getopts c:hr: opt
|
||||
do
|
||||
@@ -110,6 +136,7 @@ check_function_exist "build_rootfs"
|
||||
if [ -n "${USE_DOCKER}" ] ; then
|
||||
image_name="${distro}-rootfs-osbuilder"
|
||||
|
||||
generate_dockerfile "${distro_config_dir}"
|
||||
docker build \
|
||||
--build-arg http_proxy="${http_proxy}" \
|
||||
--build-arg https_proxy="${https_proxy}" \
|
||||
|
11
rootfs-builder/template/Dockerfile.template
Normal file
11
rootfs-builder/template/Dockerfile.template
Normal file
@@ -0,0 +1,11 @@
|
||||
#@distro@: docker image to be used to create a rootfs
|
||||
#@OS_VERSION@: Docker image version to build this dockerfile
|
||||
from @distro@:@OS_VERSION@
|
||||
|
||||
# This dockerfile needs to provide all the componets need to build a rootfs
|
||||
# Install any package need to create a rootfs (package manager, extra tools)
|
||||
|
||||
# RUN commands
|
||||
|
||||
# This will install the proper golang to build Kata components
|
||||
@INSTALL_GO@
|
@@ -13,3 +13,8 @@ endif
|
||||
mkdir -p $(DESTDIR)
|
||||
cp "$(MK_DIR)/rootfs_lib_template.sh" "$(DESTDIR)/rootfs_lib.sh"
|
||||
cp "$(MK_DIR)/config_template.sh" "$(DESTDIR)/config.sh"
|
||||
sed \
|
||||
-e "s|@distro@|$(ROOTFS_BASE_NAME)|g" \
|
||||
Dockerfile.template > $(DESTDIR)/Dockerfile.in
|
||||
|
||||
|
||||
|
1
rootfs-builder/versions.txt
Normal file
1
rootfs-builder/versions.txt
Normal file
@@ -0,0 +1 @@
|
||||
GO_VERSION=1.9.2
|
@@ -45,5 +45,9 @@ function build_image()
|
||||
}
|
||||
|
||||
@test "Can create euleros image" {
|
||||
if [ "$TRAVIS" = true ]
|
||||
then
|
||||
skip "travis timout, see: https://github.com/kata-containers/osbuilder/issues/46"
|
||||
fi
|
||||
build_image euleros
|
||||
}
|
||||
|
Reference in New Issue
Block a user