90 lines
2.1 KiB
Bash
Executable File
90 lines
2.1 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
base_path="~/projects/system/dev-env/scripts/"
|
|
mount_path=$(pwd)
|
|
if [[ -n "$2" ]]; then
|
|
name=$2
|
|
else
|
|
name=$(pwd | rev | cut -d "/" -f 1-2 | rev | sed -e 's/\//-/')
|
|
fi
|
|
|
|
if [[ $1 == "help" ]]; then
|
|
echo "
|
|
dev-containers [container|rm|help] [name]
|
|
|
|
Container can be one of:
|
|
- base
|
|
- node
|
|
- php
|
|
- python
|
|
- torch-rocm
|
|
- vue
|
|
- webserver
|
|
rm removes the container for the current directory if provided name is existing container, or unspecified.
|
|
"
|
|
exit 0
|
|
fi
|
|
|
|
echo "
|
|
janishutz dev containers
|
|
"
|
|
if [[ $(systemctl is-active docker) != "active" ]]; then
|
|
echo "
|
|
-> Docker daemon not running, starting with systemctl <-
|
|
"
|
|
sudo systemctl start docker
|
|
fi
|
|
|
|
if [[ $1 == "rm" ]]; then
|
|
echo "
|
|
-> Removing containers with $name in their name <-
|
|
"
|
|
if [[ $(read -p "Do you really want to delete ALL containers for this directory? (y/N) " response && echo $response) == 'y' ]]; then
|
|
for container in $(docker container ls -aq -f name=$name); do
|
|
docker stop $container
|
|
docker container rm $container
|
|
done
|
|
else
|
|
echo "Aborting."
|
|
exit 0
|
|
fi
|
|
elif [[ $1 == "shell" ]]; then
|
|
containers=$(docker ps -q -f name=$name)
|
|
count=$((${#containers[@]}))
|
|
|
|
if [[ ${containers[0]} == "" ]]; then
|
|
count=$(($count-1))
|
|
fi
|
|
|
|
if [[ $count == 0 ]]; then
|
|
echo "
|
|
-> No suitable running container found. Aborting.
|
|
"
|
|
elif [[ $count == 1 ]]; then
|
|
echo "
|
|
-> Connecting to running container ${containers[0]}
|
|
"
|
|
docker exec -it ${containers[0]} '/bin/bash'
|
|
else
|
|
echo "
|
|
-> Multiple possible containers found to attach to. Pick one (enter number)
|
|
"
|
|
docker ps -f name=$name
|
|
read -p "Enter number (1-$count) " sel
|
|
docker exec -it ${containers[$(($sel-1))]} '/bin/bash'
|
|
fi
|
|
else
|
|
name=$name-$1
|
|
if [[ $(docker container ls -aq -f name=$name) != "" ]]; then
|
|
echo "
|
|
-> Starting existing container $name <-
|
|
"
|
|
docker start -i $name
|
|
else
|
|
echo "
|
|
-> Creating container $name <-
|
|
"
|
|
eval "${base_path}$1-container $name $mount_path"
|
|
fi
|
|
fi
|