49 lines
965 B
Bash
Executable File
49 lines
965 B
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# 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.
|
|
|
|
main() {
|
|
cd "$(dirname "${0}")/../../.."
|
|
|
|
local container_name=code-server-dev
|
|
|
|
if docker inspect $container_name &> /dev/null; then
|
|
echo "-- Starting container"
|
|
docker start "$container_name" > /dev/null
|
|
|
|
enter
|
|
exit 0
|
|
fi
|
|
|
|
build
|
|
run
|
|
enter
|
|
}
|
|
|
|
enter() {
|
|
echo "--- Entering $container_name"
|
|
docker exec -it "$container_name" /bin/bash
|
|
}
|
|
|
|
run() {
|
|
echo "--- Spawning $container_name"
|
|
docker run \
|
|
-it \
|
|
--name $container_name \
|
|
"-v=$PWD:/code-server" \
|
|
"-w=/code-server" \
|
|
"-p=127.0.0.1:8080:8080" \
|
|
$(if [[ -t 0 ]]; then echo -it; fi) \
|
|
"$container_name"
|
|
}
|
|
|
|
build() {
|
|
echo "--- Building $container_name"
|
|
docker build -t $container_name ./ci/dev/container > /dev/null
|
|
}
|
|
|
|
main "$@"
|