refactor: reorganize with some changes the docker images and manage.sh

This commit is contained in:
Andrey Antukh 2019-06-03 16:53:31 +02:00
parent 3b648f5aa5
commit a2c41cf9a7
20 changed files with 321 additions and 198 deletions

144
manage.sh
View file

@ -4,42 +4,41 @@ set -e
REV=`git rev-parse --short HEAD`
IMGNAME="uxbox"
function kill_container {
function kill-container {
echo "Cleaning development container $IMGNAME:$REV..."
if $(sudo docker ps | grep -q $IMGNAME); then
sudo docker ps | grep $IMGNAME | awk '{print $1}' | xargs --no-run-if-empty sudo docker kill
if $(docker ps | grep -q $IMGNAME); then
docker ps | grep $IMGNAME | awk '{print $1}' | xargs --no-run-if-empty docker kill
fi
if $(sudo docker ps -a | grep -q $IMGNAME); then
sudo docker ps -a | grep $IMGNAME | awk '{print $1}' | xargs --no-run-if-empty sudo docker rm
if $(docker ps -a | grep -q $IMGNAME); then
docker ps -a | grep $IMGNAME | awk '{print $1}' | xargs --no-run-if-empty docker rm
fi
}
function remove_image {
function remove-image {
echo "Clean old development image $IMGNAME..."
sudo docker images | grep $IMGNAME | awk '{print $3}' | xargs --no-run-if-empty sudo docker rmi
docker images | grep $IMGNAME | awk '{print $3}' | xargs --no-run-if-empty docker rmi
}
function build_image {
kill_container
remove_image
function build-devenv {
kill-container
echo "Building development image $IMGNAME:$REV..."
sudo docker build --rm=true -t $IMGNAME:$REV docker/
docker build --rm=true -t $IMGNAME:$REV -t $IMGNAME:latest docker/devenv
}
function run_image {
kill_container
function run-devenv {
kill-container
if ! $(sudo docker images | grep $IMGNAME | grep -q $REV); then
build_image
if ! $(docker images | grep $IMGNAME | grep -q $REV); then
build-devenv
fi
mkdir -p $HOME/.m2
rm -rf ./frontend/node_modules
CONTAINER=$IMGNAME:$REV
CONTAINER=$IMGNAME:latest
echo "Running development image $CONTAINER..."
sudo docker run -ti \
docker run --rm -ti \
-v `pwd`:/home/uxbox/uxbox \
-v $HOME/.m2:/home/uxbox/.m2 \
-v $HOME/.gitconfig:/home/uxbox/.gitconfig \
@ -47,59 +46,40 @@ function run_image {
$CONTAINER
}
function test {
kill_container
echo "TODO Testing backend (require running postgresql)..."
cd ./backend
#lein test
cd ..
echo "Testing frontend..."
cd ./frontend
./scripts/build-tests
node ./out/tests.js
cd ..
function build-release-frontend-local {
docker run -ti --rm \
-w /home/uxbox/uxbox/frontend \
-v `pwd`:/home/uxbox/uxbox \
-v $HOME/.m2:/home/uxbox/.m2 \
-e UXBOX_API_URL="/api" \
-e UXBOX_VIEW_URL="/view" \
$IMGNAME:latest ./scripts/build-release.sh
}
function release_local {
cd frontend
echo "Building frontend release..."
rm -rf ./dist
rm -rf ./node_modules
npm install
npm run dist
./scripts/dist-main
./scripts/dist-view
./scripts/dist-worker
echo "Frontend release generated in $(pwd)/dist"
cd ../backend
echo "Building backend release..."
rm -rf ./dist
./scripts/dist.sh
echo "Backend release generated in $(pwd)/dist"
cd ..
function build-release-frontend {
build-release-frontend-local || exit 1;
rm -rf docker/release.frontend/dist || exit 1;
cp -r frontend/dist docker/release.frontend/ || exit 1;
docker build --rm=true -t ${IMGNAME}-frontend:$REV -t ${IMGNAME}-frontend:latest docker/release.frontend/
rm -rf docker/release.frontend/dist || exit 1;
}
function release_image {
echo "Building frontend release..."
rm -rf ./frontend/dist ./frontend/node_modules ./frontend/dist
sudo docker build --rm=true -t ${IMGNAME}_frontend:$REV frontend/
echo "Frontend release image generated"
echo "Building backend release..."
rm -rf ./backend/dist
sudo docker build --rm=true -t ${IMGNAME}_backend:$REV backend/
echo "Backend release image generated"
function build-release-backend {
rm -rf docker/release.backend/dist || exit 1;
rsync -avr \
--exclude="/test" \
--exclude="/resources/public/media" \
--exclude="/target" \
--exclude="/scripts" \
--exclude="/.*" \
backend/ docker/release.backend/dist/;
docker build --rm=true -t ${IMGNAME}-backend:$REV -t ${IMGNAME}-backend:latest docker/release.backend/
rm -rf docker/release.backend/dist || exit 1;
}
function run_release {
kill_container
echo "Running production images..."
sudo docker-compose up -d
function build-release {
build-release-frontend || exit 1;
build-release-backend || exit 1;
}
function usage {
@ -107,30 +87,21 @@ function usage {
echo "USAGE: $0 [ clean | build | run | test | release-local | release-docker | run-release ]"
echo "Options:"
echo "- clean Stop and clean up docker containers"
echo "- build Build docker container for development with tmux"
echo "- run Run (and build if necessary) development container (frontend at localhost:3449, backend at localhost:6060)"
echo "- test Execute frontend unit tests (backend unit tests no available yet)"
echo "- release-local Build a 'production ready' release"
echo "- release-docker Build a 'production ready' docker container"
echo "- run-release Run a 'production ready' docker-compose environment (frontend at localhost:80, backend at localhost:6060)"
echo "- build-devenv Build docker container for development with tmux"
echo "- run-devenv Run (and build if necessary) development container (frontend at localhost:3449, backend at localhost:6060)"
echo "- build-release Build a 'production ready' release docker images"
}
case $1 in
clean)
kill_container
remove_image
kill-container
remove-image
;;
build)
build_image
build-devenv)
build-devenv
;;
run)
run_image
;;
test)
test
;;
release-local)
release_local
run-devenv)
run-devenv
;;
release-docker)
release_image
@ -138,6 +109,15 @@ case $1 in
run-release)
run_release
;;
build-release)
build-release
;;
build-release-frontend)
build-release-frontend
;;
build-release-backend)
build-release-backend
;;
*)
usage
;;