Streamline dev container workflow (#2014)

This commit is contained in:
Anmol Sethi 2020-08-27 15:39:24 -04:00 committed by GitHub
parent ceb2265b14
commit 1558ff6dac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 56 deletions

View File

@ -1,13 +0,0 @@
FROM node:12
RUN apt-get update && apt-get install -y \
curl \
iproute2 \
vim \
iptables \
net-tools \
libsecret-1-dev \
libx11-dev \
libxkbfile-dev
CMD ["/bin/bash"]

View File

@ -1,48 +1,23 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail 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() { main() {
cd "$(dirname "${0}")/../../.." cd "$(dirname "$0")/../../.."
source ./ci/lib.sh
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 \ docker run \
-it \ -it \
--name $container_name \ --rm \
"-v=$PWD:/code-server" \ -v "$PWD:/src" \
"-w=/code-server" \ -w /src \
"-p=127.0.0.1:8080:8080" \ -p 127.0.0.1:8080:8080 \
$(if [[ -t 0 ]]; then echo -it; fi) \ "$(docker_build ./ci/images/debian8)" \
"$container_name" "$@"
} }
build() { docker_build() {
echo "--- Building $container_name" docker build "$@" >&2
docker build -t $container_name ./ci/dev/image > /dev/null docker build -q "$@"
} }
main "$@" main "$@"

View File

@ -46,14 +46,12 @@ yarn watch
To develop inside of an isolated docker container: To develop inside of an isolated docker container:
```shell ```shell
./ci/dev/image/exec.sh ./ci/dev/image/exec.sh yarn
./ci/dev/image/exec.sh yarn vscode
root@12345:/code-server# yarn ./ci/dev/image/exec.sh yarn watch
root@12345:/code-server# yarn vscode
root@12345:/code-server# yarn watch
``` ```
Any changes made to the source will be live reloaded. `yarn watch` will live reload changes to the source.
If changes are made to the patch and you've built previously you must manually If changes are made to the patch and you've built previously you must manually
reset VS Code then run `yarn vscode:patch`. reset VS Code then run `yarn vscode:patch`.
@ -78,7 +76,7 @@ node .
Build release packages (make sure you run `./ci/steps/release.sh` first): Build release packages (make sure you run `./ci/steps/release.sh` first):
``` ```
./ci/steps/release-packages.sh ./ci/dev/image/exec.sh ./ci/steps/release-packages.sh
# The standalone release is in ./release-standalone # The standalone release is in ./release-standalone
# .deb, .rpm and the standalone archive are in ./release-packages # .deb, .rpm and the standalone archive are in ./release-packages
``` ```