50 lines
1.1 KiB
Bash
50 lines
1.1 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
# exec.sh opens an interactive bash session inside of a docker container
|
||
|
# for improved isolation during development
|
||
|
# if the container exists it is restarted if necessary, then reused
|
||
|
|
||
|
set -euo pipefail
|
||
|
cd "$(dirname "$0")"
|
||
|
|
||
|
# Ensure submodules are cloned and up to date.
|
||
|
git submodule update --init
|
||
|
|
||
|
container_name=code-server-dev
|
||
|
|
||
|
enter() {
|
||
|
echo "--- Entering $container_name"
|
||
|
docker exec -it $container_id /bin/bash
|
||
|
}
|
||
|
|
||
|
run() {
|
||
|
echo "--- Spawning $container_name"
|
||
|
container_id=$(docker run \
|
||
|
-it \
|
||
|
--name $container_name \
|
||
|
"-v=$PWD:/code-server" \
|
||
|
"-w=/code-server" \
|
||
|
"-p=127.0.0.1:8080:8080" \
|
||
|
$([[ -t 0 ]] && echo -it || true) \
|
||
|
$container_name)
|
||
|
}
|
||
|
|
||
|
build() {
|
||
|
echo "--- Building $container_name"
|
||
|
cd ../../
|
||
|
docker build -t $container_name -f ./ci/dev-image/Dockerfile . > /dev/null
|
||
|
}
|
||
|
|
||
|
container_id=$(docker container inspect --format="{{.Id}}" $container_name 2> /dev/null) || true
|
||
|
|
||
|
if [ "$container_id" != "" ]; then
|
||
|
echo "-- Starting container"
|
||
|
docker start $container_id > /dev/null
|
||
|
|
||
|
enter
|
||
|
exit 0
|
||
|
fi
|
||
|
|
||
|
build
|
||
|
run
|
||
|
enter
|