#!/bin/bash
# Usando uma lista com botões de rádio com o Zenity
# export CONTAINERS=$(docker ps -a --format "table {{.ID}}\t{{.Image}}\t{{.Names}}")
#----------#
# Welcome #
#----------#
#zenity --height="120" --width="300" --notification --text "Olá ${LOGNAME} :)"
export PATH = "${PWD}/app"
# REMOÇÃO DE CONTAINERS E IMAGENS
sleep 1s
# Criando variavel global e atribuindo informacoes sobre docker na máquina local
export CONTAINER=$(docker ps -a --format "{{.Names}}")
# Caso tenha algum container
#----------#
# DELETE #
#----------#
if [[ "$CONTAINER" ]]; then
# Criando uma lista de opções para dados serem excluídos
DELETE=$(zenity --height="360" --width="720" --list --text "Iniciando projeto" \
--radiolist \
--column "" \
--column "Excluir" \
TRUE Apagar-Tudo FALSE $CONTAINER);
# Caso a exclusão foi para containers; então
if [[ "${DELETE}" == "${CONTAINER}" ]]; then
print_style "Excluindo ${CONTAINER}...\n" "info";
docker stop "${DELETE}"
docker rm -f "${DELETE}"
docker rmi -f "${DELETE}"
sleep 1s
zenity --height="120" --width="360" --notification --text "\n${CONTAINER} foi apagado!"
exit 0
else
# Caso a exclusão foi para apagar tudo; então
if [[ "${DELETE}" == "Apagar-Tudo" ]]; then
# Pergunta se realmente deseja apagar todos containers
zenity --question --width="420" --text "Tem certeza que deseja apagar todos os containers?"
if [[ $? = 0 ]]; then
print_style "Deletando todos containers...\n" "info"
docker stop $(docker ps -aq)
docker rm -f $(docker ps -aq)
docker rmi -f $(docker images -aq)
sleep 1s
zenity --height="120" --width="300" --notification --text "Todos os containers foram excluidos!"
else
exit 0
fi
else
# Caso nenhum. Saia!
exit 0
fi
fi
fi
# REMOÇÃO DE CONTAINERS E IMAGENS }
# DOCKTERIZANDO AMBIENTE DA APLICAÇÃO
#----------#
# Ambiente #
#----------#
zenity --height="120" --width="300" --notification --text "Iniciando projeto...\n" "info"
ITEM_SELECIONADO=$(zenity --height="360" --width="720" --list --text "Iniciando projeto" \
--radiolist \
--column "Selecionar" \
--column "Métodos" \
TRUE Imagens FALSE Microservicos);
# Caso algum método ágil para desenvolver foi selecionado
if [[ "$ITEM_SELECIONADO" ]]; then
# Caso método seja equivalente a Imagens
# **************************************
# ********** UP IMAGENS DOCKER *********
# **************************************
if [[ "${ITEM_SELECIONADO}" == "Imagens" ]]; then
IMAGEM_SELECIONADO=$(zenity --height="300" --width="600" --list --text "Escolha suas imagens Dockerfile" \
--radiolist \
--column "Selecionar" \
--column "Imagens" \
TRUE ahsouza/laravel FALSE ahsouza/vuejs FALSE Todas);
# Caso a imagem foi realmente selecionada
if [[ "${IMAGEM_SELECIONADO}" == "ahsouza/laravel" ]]; then
sleep 1s
zenity --height="120" --width="360" --notification --text "\Construindo ${IMAGEM_SELECIONADO}..."
echo "Building ${IMAGEM_SELECIONADO}..." "info";
docker build -t ${IMAGEM_SELECIONADO} -f laravel.Dockerfile .
#docker run -d --name ahsouza -v $(pwd):/var/www -p 8000:8000 ahsouza/laravel-5.8
docker run -d -p 8000:8000 --name timenow-dev-laravel ${IMAGEM_SELECIONADO}
docker exec -it timenow-dev-laravel bash up.sh
# utilizando volumes e fazendo backup da aplicação
# docker run --rm --volumes-from timenow-dev-laravel -v $(pwd):/backup ubuntu bash -c "cd /var/www && tar cvf /backup/backup.tar ."
docker run --rm --volumes-from timenow-dev-laravel -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /var/
sleep 1s
zenity --height="120" --width="300" --info --text "\nImagem ${IMAGEM_SELECIONADO} \n\construida com sucesso!"
elif [[ "${IMAGEM_SELECIONADO}" == "ahsouza/vuejs" ]]; then
sleep 1s
zenity --height="120" --width="360" --notification --text "\Construindo ${IMAGEM_SELECIONADO}..."
echo "Building ${IMAGEM_SELECIONADO}..." "info";
docker build -t ${IMAGEM_SELECIONADO} -f vue.Dockerfile .
#docker run -d --name ahsouza -v $(pwd):/var/www -p 8000:8000 ahsouza/vuejs
docker run -d -p 8080:8080 --name timenow-dev-vue ${IMAGEM_SELECIONADO}
#docker exec -it ahsouza bash server.sh
docker exec -it timenow-dev-vue bash up.sh
sleep 1s
zenity --height="120" --width="300" --info --text "\nImagem ${IMAGEM_SELECIONADO} \n\construida com sucesso!"
elif [[ "${IMAGEM_SELECIONADO}" == "Todas" ]]; then
sleep 1s
zenity --height="120" --width="360" --notification --text "\Construindo API Laravel & SPA Vue..."
echo "Building API & SPA..."
docker build -t ahsouza/vuejs -f vue.Dockerfile .
docker run -d -p 8080:8080 --name timenow-dev-vue ahsouza/vuejs
docker build -t ahsouza/laravel -f laravel.Dockerfile .
docker run -d -p 8000:8000 --name timenow-dev-laravel ahsouza/laravel
docker exec -it timenow-dev-laravel bash up.sh
sleep 1s
zenity --height="120" --width="300" --info --text "\nImagens construídas com sucesso!"
else
# Caso nenhum. Saia!
exit 0
fi
fi
else
# **************************************
# ********* UP SERVICES DOCKER *********
# **************************************
SERVICE_SELECIONADO=$(zenity --height="300" --width="600" --list --text "Ativando serviços" \
--checklist \
--column "Selecionar" \
--column "Serviços" \
FALSE apache FALSE redis FALSE nginx FALSE mysql FALSE oracle FALSE mongo FALSE wordpress FALSE aws);
# Caso método seja equivalente a Microserviços
if [[ "$SERVICE_SELECIONADO" ]]; then
sleep 1s
zenity --height="120" --width="300" --notification --text "\Habilitando ${SERVICE_SELECIONADO}..."
echo "Activating services...";
echo "Activating ${SERVICE_SELECIONADO}...";
docker-compose up
docker exec -it app bash
./up.sh
else
# Caso nenhum. Saia!
exit 0
fi
fi
fi