102 lines
3.4 KiB
Bash
Executable File
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
|
|
|