#!/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