forked from containers/buildah
-
Notifications
You must be signed in to change notification settings - Fork 0
/
buildah-scratch-demo.sh
executable file
·84 lines (78 loc) · 3.35 KB
/
buildah-scratch-demo.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/usr/bin/env bash
# author : ipbabble
# Assumptions install buildah and podman
# login to Quay.io using buildah if you want to see the image push
# otherwise it will just fail the last step and no biggy.
# buildah login quay.io
# Set some of the variables below
demoimg=myshdemo
quayuser=ipbabble
myname=WilliamHenry
distrorelease=30
pkgmgr=dnf # switch to yum if using yum
#Setting up some colors for helping read the demo output
bold=$(tput bold)
red=$(tput setaf 1)
green=$(tput setaf 2)
yellow=$(tput setaf 3)
blue=$(tput setaf 4)
cyan=$(tput setaf 6)
reset=$(tput sgr0)
echo -e "Using ${green}GREEN${reset} to introduce Buildah steps"
echo -e "Using ${yellow}YELLOW${reset} to introduce code"
echo -e "Using ${blue}BLUE${reset} to introduce Podman steps"
echo -e "Using ${cyan}CYAN${reset} to introduce bash commands"
echo -e "Building an image called ${demoimg}"
read -p "${green}Start of the script${reset}"
set -x
read -p "${green}Create a new container on disk from scratch${reset}"
newcontainer=$(buildah from scratch)
read -p "${green}Mount the root directory of the new scratch container${reset}"
scratchmnt=$(buildah mount $newcontainer)
read -p "${cyan}Lets see what is in scratchmnt${reset}"
ls $scratchmnt
echo -e "${red}Note that the root of the scratch container is EMPTY!${reset}"
read -p "${cyan}Time to install some basic bash capabilities: coreutils and bash packages${reset}"
if [ "$pkgmgr" == "dnf" ]; then
$pkgmgr install --installroot $scratchmnt --release ${distrorelease} bash coreutils --setopt install_weak_deps=false -y
elif [ "$pkgmgr" == "yum" ]; then
$pkgmgr install --installroot $scratchmnt --releasever ${distrorelease} bash coreutils -y
else
echo -e "${red}[Error] Unknown package manager ${pkgmgr}${reset}"
fi
read -p "${cyan}Clean up the packages${reset}"
$pkgmgr clean --installroot $scratchmnt all
read -p "${green}Run the shell and see what is inside. When your done, type ${red}exit${green} and return.${reset}"
buildah run $newcontainer bash
read -p "${cyan}Let's look at the program${yellow}"
FILE=./runecho.sh
/bin/cat <<EOM >$FILE
#!/usr/bin/env bash
for i in {1..9};
do
echo "This is a new cloud native container using Buildah [" \$i "]"
done
EOM
chmod +x $FILE
cat $FILE
read -p "${green}Copy program into the container and run ls to see it is there${reset}"
buildah copy $newcontainer $FILE /usr/bin
ls -al $scratchmnt/usr/bin/*.sh
read -p "${green}Run the container using Buildah${reset}"
buildah run $newcontainer /usr/bin/runecho.sh
read -p "${green}Make the container run the program by default when container is run${reset}"
buildah config --entrypoint /usr/bin/runecho.sh $newcontainer
read -p "${green}Set some config information for the container image${reset}"
buildah config --author "${myname}" --created-by "${quayuser}" --label name=${demoimg} $newcontainer
read -p "${green}Inspect the meta data${yellow}"
buildah inspect $newcontainer
read -p "${green}Unmount the container and commit to an image called ${demoimg}.${reset}"
buildah unmount $newcontainer
buildah commit $newcontainer $demoimg
read -p "${green}List the images we have.${reset}"
buildah images
read -p "${blue}Run the container using Podman.${reset}"
podman run -t $demoimg
read -p "${green}Make sure you are already logged into your account on Quay.io. Or use Quay creds.${reset}"
buildah push $demoimg docker://quay.io/$quayuser/$demoimg
echo -e "${red}We are done!${reset}"