From dfa3c9506e383d7059cec82bbee3de82fca4d3e8 Mon Sep 17 00:00:00 2001 From: aptalca Date: Thu, 29 Sep 2022 11:33:25 -0400 Subject: [PATCH] rebase main to jammy and s6v3, fix chown --- Dockerfile | 6 ++-- Dockerfile.aarch64 | 6 ++-- Dockerfile.armhf | 6 ++-- README.md | 1 + readme-vars.yml | 1 + .../dependencies.d/init-openvscode-server | 0 .../dependencies.d/init-config | 0 .../s6-rc.d/init-openvscode-server/run} | 30 ++++++------------- .../s6-rc.d/init-openvscode-server/type | 1 + .../s6-rc.d/init-openvscode-server/up | 1 + .../dependencies.d/init-services | 0 .../svc-openvscode-server/notification-fd | 1 + .../s6-rc.d/svc-openvscode-server}/run | 15 +++++----- .../s6-rc.d/svc-openvscode-server/type | 1 + .../user/contents.d/init-openvscode-server | 0 .../user/contents.d/svc-openvscode-server | 0 16 files changed, 34 insertions(+), 35 deletions(-) create mode 100644 root/etc/s6-overlay/s6-rc.d/init-config-end/dependencies.d/init-openvscode-server create mode 100644 root/etc/s6-overlay/s6-rc.d/init-openvscode-server/dependencies.d/init-config rename root/etc/{cont-init.d/30-config => s6-overlay/s6-rc.d/init-openvscode-server/run} (51%) mode change 100644 => 100755 create mode 100644 root/etc/s6-overlay/s6-rc.d/init-openvscode-server/type create mode 100644 root/etc/s6-overlay/s6-rc.d/init-openvscode-server/up create mode 100644 root/etc/s6-overlay/s6-rc.d/svc-openvscode-server/dependencies.d/init-services create mode 100644 root/etc/s6-overlay/s6-rc.d/svc-openvscode-server/notification-fd rename root/etc/{services.d/openvscode-server => s6-overlay/s6-rc.d/svc-openvscode-server}/run (61%) mode change 100644 => 100755 create mode 100644 root/etc/s6-overlay/s6-rc.d/svc-openvscode-server/type create mode 100644 root/etc/s6-overlay/s6-rc.d/user/contents.d/init-openvscode-server create mode 100644 root/etc/s6-overlay/s6-rc.d/user/contents.d/svc-openvscode-server diff --git a/Dockerfile b/Dockerfile index 7e91927..83fe388 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/linuxserver/baseimage-ubuntu:focal +FROM ghcr.io/linuxserver/baseimage-ubuntu:jammy # set version label ARG BUILD_DATE @@ -8,16 +8,18 @@ LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DA LABEL maintainer="aptalca" # environment settings +ARG DEBIAN_FRONTEND="noninteractive" ENV HOME="/config" RUN \ echo "**** install runtime dependencies ****" && \ apt-get update && \ - apt-get install -y \ + apt-get install -y --no-install-recommends \ git \ jq \ libatomic1 \ nano \ + netcat \ net-tools \ sudo && \ echo "**** install openvscode-server ****" && \ diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index 2003e69..63dd683 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -1,4 +1,4 @@ -FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-focal +FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-jammy # set version label ARG BUILD_DATE @@ -8,16 +8,18 @@ LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DA LABEL maintainer="aptalca" # environment settings +ARG DEBIAN_FRONTEND="noninteractive" ENV HOME="/config" RUN \ echo "**** install runtime dependencies ****" && \ apt-get update && \ - apt-get install -y \ + apt-get install -y --no-install-recommends \ git \ jq \ libatomic1 \ nano \ + netcat \ net-tools \ sudo && \ echo "**** install openvscode-server ****" && \ diff --git a/Dockerfile.armhf b/Dockerfile.armhf index 2807e33..d90b680 100644 --- a/Dockerfile.armhf +++ b/Dockerfile.armhf @@ -1,4 +1,4 @@ -FROM ghcr.io/linuxserver/baseimage-ubuntu:arm32v7-focal +FROM ghcr.io/linuxserver/baseimage-ubuntu:arm32v7-jammy # set version label ARG BUILD_DATE @@ -8,16 +8,18 @@ LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DA LABEL maintainer="aptalca" # environment settings +ARG DEBIAN_FRONTEND="noninteractive" ENV HOME="/config" RUN \ echo "**** install runtime dependencies ****" && \ apt-get update && \ - apt-get install -y \ + apt-get install -y --no-install-recommends \ git \ jq \ libatomic1 \ nano \ + netcat \ net-tools \ sudo && \ echo "**** install openvscode-server ****" && \ diff --git a/README.md b/README.md index e31c212..b81f10e 100644 --- a/README.md +++ b/README.md @@ -252,6 +252,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64 ## Versions +* **29.09.22:** - Rebase to jammy, switch to s6v3. Fix chown logic to skip `/config/workspace` contents. * **12.02.22:** - Update `install-extension` helper to compensate for upstream changes. * **04.02.22:** - Update binary for 1.64.0+. Allow for no token set when both toekn env vars are unset. Add libsecret for keytar. * **29.12.21:** - Add `install-extension` as a helper for mods to install extensions. diff --git a/readme-vars.yml b/readme-vars.yml index 2242abf..0cb64c1 100644 --- a/readme-vars.yml +++ b/readme-vars.yml @@ -61,6 +61,7 @@ app_setup_block: | # changelog changelogs: + - { date: "29.09.22:", desc: "Rebase to jammy, switch to s6v3. Fix chown logic to skip `/config/workspace` contents." } - { date: "12.02.22:", desc: "Update `install-extension` helper to compensate for upstream changes." } - { date: "04.02.22:", desc: "Update binary for 1.64.0+. Allow for no token set when both toekn env vars are unset. Add libsecret for keytar." } - { date: "29.12.21:", desc: "Add `install-extension` as a helper for mods to install extensions." } diff --git a/root/etc/s6-overlay/s6-rc.d/init-config-end/dependencies.d/init-openvscode-server b/root/etc/s6-overlay/s6-rc.d/init-config-end/dependencies.d/init-openvscode-server new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/s6-overlay/s6-rc.d/init-openvscode-server/dependencies.d/init-config b/root/etc/s6-overlay/s6-rc.d/init-openvscode-server/dependencies.d/init-config new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/cont-init.d/30-config b/root/etc/s6-overlay/s6-rc.d/init-openvscode-server/run old mode 100644 new mode 100755 similarity index 51% rename from root/etc/cont-init.d/30-config rename to root/etc/s6-overlay/s6-rc.d/init-openvscode-server/run index eeef139..09d9df4 --- a/root/etc/cont-init.d/30-config +++ b/root/etc/s6-overlay/s6-rc.d/init-openvscode-server/run @@ -22,26 +22,14 @@ fi [[ ! -f /config/.profile ]] && \ cp /root/.profile /config/.profile -# permissions -if [ -f "/usr/bin/find" ] && [ -f "/usr/bin/xargs" ]; then - CORES=$(nproc --all) +# fix permissions (ignore contents of /config/workspace) +echo "setting permissions::config" +find /config -path /config/workspace -prune -o -exec chown abc:abc {} + +chown abc:abc /config/workspace +echo "setting permissions::app" +chown -R abc:abc /app/openvscode-server - # Split workload between config and workspace - echo "setting permissions::configuration" - find /config -path /config/workspace -prune -false -o -type d -print0 | \ - xargs --null -r --max-args=1 --max-procs=$((CORES*2*8)) \ - chown -R abc:abc - - echo "setting permissions::workspace" - chown abc:abc /config/workspace - echo "setting permissions::app" - chown -R abc:abc /app/openvscode-server -else - # Set permissions on data mount - # do not decend into the workspace - chown -R abc:abc "$(ls /config -I workspace)" - chown abc:abc /config/workspace - chown -R abc:abc /app/openvscode-server -fi chmod 700 /config/.ssh -chmod 600 /config/.ssh/* +if [ -n "$(ls -A /config/.ssh)" ]; then + chmod 600 /config/.ssh/* +fi diff --git a/root/etc/s6-overlay/s6-rc.d/init-openvscode-server/type b/root/etc/s6-overlay/s6-rc.d/init-openvscode-server/type new file mode 100644 index 0000000..3d92b15 --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/init-openvscode-server/type @@ -0,0 +1 @@ +oneshot \ No newline at end of file diff --git a/root/etc/s6-overlay/s6-rc.d/init-openvscode-server/up b/root/etc/s6-overlay/s6-rc.d/init-openvscode-server/up new file mode 100644 index 0000000..823fdbd --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/init-openvscode-server/up @@ -0,0 +1 @@ +/etc/s6-overlay/s6-rc.d/init-openvscode-server/run \ No newline at end of file diff --git a/root/etc/s6-overlay/s6-rc.d/svc-openvscode-server/dependencies.d/init-services b/root/etc/s6-overlay/s6-rc.d/svc-openvscode-server/dependencies.d/init-services new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/s6-overlay/s6-rc.d/svc-openvscode-server/notification-fd b/root/etc/s6-overlay/s6-rc.d/svc-openvscode-server/notification-fd new file mode 100644 index 0000000..e440e5c --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/svc-openvscode-server/notification-fd @@ -0,0 +1 @@ +3 \ No newline at end of file diff --git a/root/etc/services.d/openvscode-server/run b/root/etc/s6-overlay/s6-rc.d/svc-openvscode-server/run old mode 100644 new mode 100755 similarity index 61% rename from root/etc/services.d/openvscode-server/run rename to root/etc/s6-overlay/s6-rc.d/svc-openvscode-server/run index 7ccbe3b..db30483 --- a/root/etc/services.d/openvscode-server/run +++ b/root/etc/s6-overlay/s6-rc.d/svc-openvscode-server/run @@ -11,12 +11,11 @@ else echo "**** No connection token is set ****" fi -cd /app/openvscode-server || exit - exec \ - s6-setuidgid abc \ - /app/openvscode-server/bin/openvscode-server \ - --host 0.0.0.0 \ - --port 3000 \ - --disable-telemetry \ - ${CODE_ARGS} + s6-notifyoncheck -d -n 7 -w 1000 -c "nc -z 127.0.0.1 3000" \ + cd /app/openvscode-server s6-setuidgid abc \ + /app/openvscode-server/bin/openvscode-server \ + --host 0.0.0.0 \ + --port 3000 \ + --disable-telemetry \ + ${CODE_ARGS} diff --git a/root/etc/s6-overlay/s6-rc.d/svc-openvscode-server/type b/root/etc/s6-overlay/s6-rc.d/svc-openvscode-server/type new file mode 100644 index 0000000..1780f9f --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/svc-openvscode-server/type @@ -0,0 +1 @@ +longrun \ No newline at end of file diff --git a/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-openvscode-server b/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-openvscode-server new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/s6-overlay/s6-rc.d/user/contents.d/svc-openvscode-server b/root/etc/s6-overlay/s6-rc.d/user/contents.d/svc-openvscode-server new file mode 100644 index 0000000..e69de29