hello-kube/docker.sh
2025-04-12 11:03:22 +02:00

102 lines
3.4 KiB
Bash
Executable File

#!/bin/bash
progName="./$(/bin/basename $0)"
DOCKER_REGISTRY="$(grep -s 'DOCKER_REGISTRY=' .env | cut -f2 -d=)"
DOCKER_REGISTRY_USER="$(grep -s 'DOCKER_REGISTRY_USER=' .env | cut -f2 -d=)"
DOCKER_REGISTRY_PASSWORD="$(grep -s 'DOCKER_REGISTRY_PASSWORD=' .env | cut -f2 -d=)"
DOCKER_IMAGE="$(grep -s 'DOCKER_IMAGE=' .env | cut -f2 -d=)"
DOCKER_IMAGE_VERSION="$(grep -s 'DOCKER_IMAGE_VERSION=' .env | cut -f2 -d=)"
function print_usage {
# print
/bin/cat << EOF
Usage: $progName [options]
Options:
start Start docker container
stop Stop docker container
down Stop docker container and delete container and image
bash Open a shell bash
bash-root Open a root shell
logs Display container logs
build Build docker images and push on registry
build-no-cache Build docker images without use cache and push on registry
help,-h,--help Display this help
Examples:
To start container
$progName start
To stop container
$progName stop
To create a new functional environment after recovering the sources
$progName build
EOF
}
if [ $# -eq 0 ]; then
echo "${progName}: you must specify an option"
echo -e "Try '$progName help' for more information.\n"
fi
while test $# -gt 0
do
case "$1" in
start)
docker compose up -d;
;;
stop)
docker compose stop
;;
down)
docker compose down --rmi all
;;
bash)
docker exec -it hello-kube /bin/sh
;;
bash-root)
docker exec --user root -it hello-kube /bin/sh
;;
logs)
docker logs hello-kube -f
;;
build-no-cache)
echo $DOCKER_REGISTRY_PASSWORD| docker login -u ${DOCKER_REGISTRY_USER} --password-stdin ${DOCKER_REGISTRY}
if [ $? -eq 0 ]; then
# need for multi architecture
docker buildx create --append --use --name gmobuilder
docker buildx inspect gmobuilder --bootstrap
# build multi architecture image
docker buildx build --no-cache --platform linux/amd64,linux/arm64 \
-t ${DOCKER_REGISTRY_USER}/${DOCKER_IMAGE}:${DOCKER_IMAGE_VERSION} \
-f ./docker/hello-kube/Dockerfile . --output=type=registry
docker logout ${DOCKER_REGISTRY}
fi
;;
build)
echo $DOCKER_REGISTRY_PASSWORD| docker login -u ${DOCKER_REGISTRY_USER} --password-stdin ${DOCKER_REGISTRY}
if [ $? -eq 0 ]; then
# need for multi architecture
docker buildx create --append --use --name gmobuilder
docker buildx inspect gmobuilder --bootstrap
# build multi architecture image
docker buildx build --platform linux/amd64,linux/arm64 \
-t ${DOCKER_REGISTRY_USER}/${DOCKER_IMAGE}:${DOCKER_IMAGE_VERSION} \
-f ./docker/hello-kube/Dockerfile . --output=type=registry
docker logout ${DOCKER_REGISTRY}
fi
;;
-h|--help|help)
print_usage
exit 0
;;
*)
echo "${progName}: invalid option -- '$1'!"
echo -e "Try '$progName help' for more information.\n"
;;
esac
shift
done
exit 0