Skip to content

Instantly share code, notes, and snippets.

@manthey
Created July 27, 2023 20:34
Show Gist options
  • Save manthey/917dd44db2092bbcf5bbdc0661dc5474 to your computer and use it in GitHub Desktop.
Save manthey/917dd44db2092bbcf5bbdc0661dc5474 to your computer and use it in GitHub Desktop.
Start and configure nimbus-image
export GIRDER_PORT=8080
export VUE_PORT=8081
SCREEN_NAME=nimbusimage_docker
DOCKER_NAME=girder
SERVICE_NAME="NimbusImage Docker"
pushd /home/ubuntu/UPennContrast
case "$1" in
install)
cd /home/ubuntu
sudo apt-get update
sudo apt-get install -y \
ca-certificates \
curl \
gnupg \
lsb-release \
unzip \
nginx
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-compose-plugin
sudo groupadd docker
sudo usermod -aG docker $USER
sudo apt-get upgrade --auto-remove -y
# reboot here
# sudo snap install --classic certbot
# sudo ln -s /snap/bin/certbot /usr/bin/certbot
# vim /etc/nginx/conf.d/girder.conf
# /etc/nginx/conf.d/girder.conf /tmp/.
# service nginx start
# vim /etc/nginx/conf.d/base.conf
# certbot certonly --nginx --email "admin@www.nimbus-domain.org" --agree-tos --no-eff-email --cert-name www.nimbus-domain.org --domains www.nimbus-domain.org --rsa-key-size 4096 --keep-until-expiring --non-interactive
# service nginx restart
# certbot renew --dry-run
# chmod 600 /swap
# mkswap /swap
# swapon /swap
# vim /etc/fstab
# swapon -a
# curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
# unzip awscliv2.zip
# sudo ./aws/install
# rm -r aws
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
nvm install 12
nvm alias default 12
nvm use default
git clone https://github.com/Kitware/UPennContrast.git
pushd UPennContrast
git pull
popd
;;
start)
if ! docker ps -a | grep -q "$DOCKER_NAME"; then
echo "Starting $SERVICE_NAME"
start_service=true
fi
;;
restart)
start_service=true
if ! docker ps -a | grep -q "$DOCKER_NAME"; then
echo "Starting $SERVICE_NAME"
else
echo "Restarting $SERVICE_NAME"
stop_service=true
fi
;;
stop)
if docker ps -a | grep -q "$DOCKER_NAME"; then
echo "Stopping $SERVICE_NAME"
stop_service=true
fi
;;
pull)
docker compose pull
;;
build)
docker compose build --no-cache
;;
log)
docker compose logs -f
;;
logs)
docker compose logs -f
;;
tail)
docker compose logs -f
;;
update)
pushd /home/ubuntu/UPennContrast
git pull
popd
docker compose pull
;;
*)
if ! docker ps -a | grep -q "$DOCKER_NAME"; then
echo "Starting $SERVICE_NAME"
start_service=true
else
echo "Already running $SERVICE_NAME"
fi
;;
esac
if [ "$stop_service" = true ]; then
docker compose down
# Remove unused anonymous volumes
docker volume rm $(docker volume ls -q | grep -e '.\{64\}') 2>/dev/null
/usr/bin/screen -X -S $SCREEN_NAME quit
/usr/bin/screen -wipe >/dev/null 2>&1
fi
if [ "$start_service" = true ]; then
docker compose up -d
. ~/.nvm/nvm.sh
nvm use 12
npm ci
/usr/bin/screen -S $SCREEN_NAME -d -m /bin/bash -c 'npm run serve -- --port $VUE_PORT >/tmp/nimbus_output.log 2>&1'
until curl --silent "http://localhost:$GIRDER_PORT/api/v1/system/version" >/dev/null 2>/dev/null; do echo -n .; sleep 1; done; echo ""
until curl --silent --max-time 1 --connect-timeout 1 "http://localhost:$VUE_PORT" >/dev/null 2>/dev/null; do echo -n .; sleep 1; done; echo ""
echo "Available on port $GIRDER_PORT, $VUE_PORT"
fi
popd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment