From 9c0d5f64c8e1371a685e829882db86467cdae70b Mon Sep 17 00:00:00 2001 From: cmoog Date: Mon, 6 Apr 2020 22:15:23 +0000 Subject: [PATCH 1/8] Adds dev container and docs --- ci/dev.Dockerfile | 6 ++++++ doc/CONTRIBUTING.md | 6 ++++++ m | 50 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 ci/dev.Dockerfile create mode 100755 m diff --git a/ci/dev.Dockerfile b/ci/dev.Dockerfile new file mode 100644 index 000000000000..d43dca107c7a --- /dev/null +++ b/ci/dev.Dockerfile @@ -0,0 +1,6 @@ +FROM node:12 + +RUN apt-get update && \ + apt-get install -y curl iproute2 vim libgpgme-dev libdevmapper-dev iptables net-tools libsecret-1-dev libx11-dev libxkbfile-dev libxkbfile-dev + +CMD ["/bin/bash"] diff --git a/doc/CONTRIBUTING.md b/doc/CONTRIBUTING.md index 3f823a23a2f3..aa39b6bb5ef7 100644 --- a/doc/CONTRIBUTING.md +++ b/doc/CONTRIBUTING.md @@ -10,6 +10,12 @@ yarn vscode yarn watch # Visit http://localhost:8080 once completed. ``` +To develop inside of an isolated docker container: + +```shell +./m bash -c 'yarn && yarn vscode && yarn watch' # Visit http://localhost:8080 once completed. +``` + Any changes made to the source will be live reloaded. If changes are made to the patch and you've built previously you must manually diff --git a/m b/m new file mode 100755 index 000000000000..a77ed6c10907 --- /dev/null +++ b/m @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +set -euo pipefail +cd "$(dirname "$0")" + +# Ensure submodules are cloned and up to date. +git submodule update --init + +container_name=code-server-dev + +# Docker build is very verbose even when everything is cached. +echo "--- Building $container_name" +docker build -t $container_name -f ./ci/dev.Dockerfile . > /dev/null + +set +e +container_id=$(docker container inspect --format="{{.Id}}" $container_name 2>/dev/null) + +if [ $? -eq "0" ]; then + echo "--- Killing $container_name" + docker rm -f $container_name 2>/dev/null +fi +set -e + +echo "--- Spawning $container_name" +container_id=$(docker run \ + -it \ + --privileged \ + --name $container_name \ + "-v=$PWD:/code-server" \ + "-w=/code-server" \ + "-p=8080:8080" \ + $([[ -t 0 ]] && echo -it || true) \ + -d \ + $container_name) + +set +e + +echo "--- Executing: $@" + +CMD="$@" + +docker exec \ + $([[ -t 0 ]] && echo -it || true) \ + $container_id \ + sh -c "$CMD" + +docker exec \ + $([[ -t 0 ]] && echo -it || true) \ + $container_id \ + bash \ No newline at end of file From 28ea7633fa63c3940999b90789f02835d958d197 Mon Sep 17 00:00:00 2001 From: cmoog Date: Tue, 7 Apr 2020 15:31:14 +0000 Subject: [PATCH 2/8] In dev-image dir --- ci/dev-image/Dockerfile | 14 ++++++++++++++ m => ci/dev-image/exec.sh | 4 ++-- ci/dev.Dockerfile | 6 ------ doc/CONTRIBUTING.md | 2 +- 4 files changed, 17 insertions(+), 9 deletions(-) create mode 100644 ci/dev-image/Dockerfile rename m => ci/dev-image/exec.sh (89%) delete mode 100644 ci/dev.Dockerfile diff --git a/ci/dev-image/Dockerfile b/ci/dev-image/Dockerfile new file mode 100644 index 000000000000..4028f3fd6ced --- /dev/null +++ b/ci/dev-image/Dockerfile @@ -0,0 +1,14 @@ +FROM node:12 + +RUN apt-get update && apt-get install -y \ + curl \ + iproute2 \ + vim \ + libgpgme-dev \ + iptables \ + net-tools \ + libsecret-1-dev \ + libx11-dev \ + libxkbfile-dev + +CMD ["/bin/bash"] diff --git a/m b/ci/dev-image/exec.sh similarity index 89% rename from m rename to ci/dev-image/exec.sh index a77ed6c10907..89e48bfc5087 100755 --- a/m +++ b/ci/dev-image/exec.sh @@ -10,7 +10,7 @@ container_name=code-server-dev # Docker build is very verbose even when everything is cached. echo "--- Building $container_name" -docker build -t $container_name -f ./ci/dev.Dockerfile . > /dev/null +cd ../../ && docker build -t $container_name -f ./ci/dev-image/Dockerfile . > /dev/null set +e container_id=$(docker container inspect --format="{{.Id}}" $container_name 2>/dev/null) @@ -42,7 +42,7 @@ CMD="$@" docker exec \ $([[ -t 0 ]] && echo -it || true) \ $container_id \ - sh -c "$CMD" + bash -c "$CMD" docker exec \ $([[ -t 0 ]] && echo -it || true) \ diff --git a/ci/dev.Dockerfile b/ci/dev.Dockerfile deleted file mode 100644 index d43dca107c7a..000000000000 --- a/ci/dev.Dockerfile +++ /dev/null @@ -1,6 +0,0 @@ -FROM node:12 - -RUN apt-get update && \ - apt-get install -y curl iproute2 vim libgpgme-dev libdevmapper-dev iptables net-tools libsecret-1-dev libx11-dev libxkbfile-dev libxkbfile-dev - -CMD ["/bin/bash"] diff --git a/doc/CONTRIBUTING.md b/doc/CONTRIBUTING.md index aa39b6bb5ef7..e654bc11d0c3 100644 --- a/doc/CONTRIBUTING.md +++ b/doc/CONTRIBUTING.md @@ -13,7 +13,7 @@ yarn watch # Visit http://localhost:8080 once completed. To develop inside of an isolated docker container: ```shell -./m bash -c 'yarn && yarn vscode && yarn watch' # Visit http://localhost:8080 once completed. +./ci/dev-image/exec.sh bash -c 'yarn && yarn vscode && yarn watch' # Visit http://localhost:8080 once completed. ``` Any changes made to the source will be live reloaded. From a1e8523781c5f9b10662fca529e34e637b0d6d31 Mon Sep 17 00:00:00 2001 From: cmoog Date: Tue, 7 Apr 2020 16:31:33 +0000 Subject: [PATCH 3/8] Use existing container if available --- ci/dev-image/Dockerfile | 1 - ci/dev-image/exec.sh | 52 ++++++++++++++++++++--------------------- doc/CONTRIBUTING.md | 6 ++++- 3 files changed, 31 insertions(+), 28 deletions(-) diff --git a/ci/dev-image/Dockerfile b/ci/dev-image/Dockerfile index 4028f3fd6ced..46f7c184b917 100644 --- a/ci/dev-image/Dockerfile +++ b/ci/dev-image/Dockerfile @@ -4,7 +4,6 @@ RUN apt-get update && apt-get install -y \ curl \ iproute2 \ vim \ - libgpgme-dev \ iptables \ net-tools \ libsecret-1-dev \ diff --git a/ci/dev-image/exec.sh b/ci/dev-image/exec.sh index 89e48bfc5087..5b8b46c95377 100755 --- a/ci/dev-image/exec.sh +++ b/ci/dev-image/exec.sh @@ -8,21 +8,14 @@ git submodule update --init container_name=code-server-dev -# Docker build is very verbose even when everything is cached. -echo "--- Building $container_name" -cd ../../ && docker build -t $container_name -f ./ci/dev-image/Dockerfile . > /dev/null - -set +e -container_id=$(docker container inspect --format="{{.Id}}" $container_name 2>/dev/null) - -if [ $? -eq "0" ]; then - echo "--- Killing $container_name" - docker rm -f $container_name 2>/dev/null -fi -set -e - -echo "--- Spawning $container_name" -container_id=$(docker run \ +enter() { + echo "--- Entering $container_name" + docker exec -it $container_id /bin/bash +} + +run() { + echo "--- Spawning $container_name" + container_id=$(docker run \ -it \ --privileged \ --name $container_name \ @@ -32,19 +25,26 @@ container_id=$(docker run \ $([[ -t 0 ]] && echo -it || true) \ -d \ $container_name) +} -set +e +build() { + echo "--- Building $container_name" + cd ../../ && docker build -t $container_name -f ./ci/dev-image/Dockerfile . > /dev/null +} -echo "--- Executing: $@" +set +e +container_id=$(docker container inspect --format="{{.Id}}" $container_name 2> /dev/null) -CMD="$@" +if [ $? -eq "0" ]; then + set -e + echo "-- Starting container" + docker start $container_id > /dev/null -docker exec \ - $([[ -t 0 ]] && echo -it || true) \ - $container_id \ - bash -c "$CMD" + enter + exit 0 +fi -docker exec \ - $([[ -t 0 ]] && echo -it || true) \ - $container_id \ - bash \ No newline at end of file +set -e +build +run +enter diff --git a/doc/CONTRIBUTING.md b/doc/CONTRIBUTING.md index e654bc11d0c3..35bcc720bac5 100644 --- a/doc/CONTRIBUTING.md +++ b/doc/CONTRIBUTING.md @@ -13,7 +13,11 @@ yarn watch # Visit http://localhost:8080 once completed. To develop inside of an isolated docker container: ```shell -./ci/dev-image/exec.sh bash -c 'yarn && yarn vscode && yarn watch' # Visit http://localhost:8080 once completed. +./ci/dev-image/exec.sh + +root@12345:/code-server# yarn +root@12345:/code-server# yarn vscode +root@12345:/code-server# yarn watch ``` Any changes made to the source will be live reloaded. From 0c22227e4ed3fe6afa31f21f28feebca99fa9fe2 Mon Sep 17 00:00:00 2001 From: cmoog Date: Tue, 14 Apr 2020 18:01:52 +0000 Subject: [PATCH 4/8] Adds host flag to docs --- doc/CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/CONTRIBUTING.md b/doc/CONTRIBUTING.md index 35bcc720bac5..c6627ea069dd 100644 --- a/doc/CONTRIBUTING.md +++ b/doc/CONTRIBUTING.md @@ -17,7 +17,7 @@ To develop inside of an isolated docker container: root@12345:/code-server# yarn root@12345:/code-server# yarn vscode -root@12345:/code-server# yarn watch +root@12345:/code-server# yarn watch --host=0.0.0.0 ``` Any changes made to the source will be live reloaded. From c78878d151e26481b7fcbd36db6650914a26c184 Mon Sep 17 00:00:00 2001 From: cmoog Date: Tue, 14 Apr 2020 19:15:20 +0000 Subject: [PATCH 5/8] Review changes --- ci/dev-image/exec.sh | 14 +++++--------- doc/CONTRIBUTING.md | 2 +- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/ci/dev-image/exec.sh b/ci/dev-image/exec.sh index 5b8b46c95377..c1acc4bba077 100755 --- a/ci/dev-image/exec.sh +++ b/ci/dev-image/exec.sh @@ -17,26 +17,23 @@ run() { echo "--- Spawning $container_name" container_id=$(docker run \ -it \ - --privileged \ --name $container_name \ "-v=$PWD:/code-server" \ "-w=/code-server" \ - "-p=8080:8080" \ + "-p=127.0.0.1:8080:8080" \ $([[ -t 0 ]] && echo -it || true) \ - -d \ $container_name) } build() { echo "--- Building $container_name" - cd ../../ && docker build -t $container_name -f ./ci/dev-image/Dockerfile . > /dev/null + cd ../../ + docker build -t $container_name -f ./ci/dev-image/Dockerfile . > /dev/null } -set +e -container_id=$(docker container inspect --format="{{.Id}}" $container_name 2> /dev/null) +container_id=$(docker container inspect --format="{{.Id}}" $container_name 2> /dev/null) || true -if [ $? -eq "0" ]; then - set -e +if [ "$container_id" != "" ]; then echo "-- Starting container" docker start $container_id > /dev/null @@ -44,7 +41,6 @@ if [ $? -eq "0" ]; then exit 0 fi -set -e build run enter diff --git a/doc/CONTRIBUTING.md b/doc/CONTRIBUTING.md index c6627ea069dd..35bcc720bac5 100644 --- a/doc/CONTRIBUTING.md +++ b/doc/CONTRIBUTING.md @@ -17,7 +17,7 @@ To develop inside of an isolated docker container: root@12345:/code-server# yarn root@12345:/code-server# yarn vscode -root@12345:/code-server# yarn watch --host=0.0.0.0 +root@12345:/code-server# yarn watch ``` Any changes made to the source will be live reloaded. From 37a5d27261eb3ad6ff295ca22c055bb09f1b3810 Mon Sep 17 00:00:00 2001 From: cmoog Date: Tue, 14 Apr 2020 22:04:44 +0000 Subject: [PATCH 6/8] Adds documentation --- ci/dev-image/exec.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ci/dev-image/exec.sh b/ci/dev-image/exec.sh index c1acc4bba077..999b7b295787 100755 --- a/ci/dev-image/exec.sh +++ b/ci/dev-image/exec.sh @@ -1,4 +1,6 @@ #!/usr/bin/env bash +# exec.sh opens an interactive bash session inside of a docker container +# for improved isolation during development set -euo pipefail cd "$(dirname "$0")" From d763a3c2a04d7d79787cd269b28a3ac760311ec8 Mon Sep 17 00:00:00 2001 From: cmoog Date: Tue, 14 Apr 2020 22:07:32 +0000 Subject: [PATCH 7/8] fmt --- ci/dev-image/exec.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/dev-image/exec.sh b/ci/dev-image/exec.sh index 999b7b295787..9a4f9a2b4d30 100755 --- a/ci/dev-image/exec.sh +++ b/ci/dev-image/exec.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# exec.sh opens an interactive bash session inside of a docker container +# exec.sh opens an interactive bash session inside of a docker container # for improved isolation during development set -euo pipefail From 8a6ab302d5feffdcb0b33abfadc08b2668ac087d Mon Sep 17 00:00:00 2001 From: cmoog Date: Tue, 14 Apr 2020 22:09:49 +0000 Subject: [PATCH 8/8] Comment --- ci/dev-image/exec.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/ci/dev-image/exec.sh b/ci/dev-image/exec.sh index 9a4f9a2b4d30..8b589f4b535b 100755 --- a/ci/dev-image/exec.sh +++ b/ci/dev-image/exec.sh @@ -1,6 +1,7 @@ #!/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")"