Skip to content

Commit dbed7d5

Browse files
committed
Release 24.03
1 parent 3795058 commit dbed7d5

File tree

24 files changed

+317
-91
lines changed

24 files changed

+317
-91
lines changed

.gitignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,9 @@
1111
# '**' matches nested directories (e.g. 'a/**/z')
1212
# recommended files on 'https://github.com/github/gitignore'
1313

14+
..developer*
1415
.vscode
1516
.cache*
16-
.debugger*
17-
.developer*
1817
.favorites.json
1918
.g3-cache*
2019
.secret*

CHANGELOG.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,28 @@
66

77
***
88

9+
### Release 24.03
10+
11+
This is the first `G3v5` release.
12+
It also introduces the [portable Visual Studio Code][vscode-portable] installation.
13+
14+
*Remark*: The version number `G3v4` has been skipped, to align the numbering with the sibling project [accetto/ubuntu-vnc-xfce-g3][accetto-github-ubuntu-vnc-xfce-g3].
15+
16+
The updated script `set_user_permissions.sh`, which is part of Dockerfiles, skips the hidden files and directories now.
17+
It generally should not have any unwanted side effects, but it may make a difference in some scenarios, hence the version increase.
18+
19+
The default `Visual Studio Code` installation path is `$HOME/.vscode-portable/code` and it can be changed by setting the build argument `ARG_VSCODE_PATH`.
20+
21+
By setting the build argument `ARG_VSCODE_VERSION` it's possible to install a particular `Visual Studio Code` version.
22+
23+
The complete `Visual Studio Code` profile is by default in the folder `$HOME/.vscode-portable/code/data`.
24+
25+
Note that the portable `Visual Studio Code` does not support automatic updates.
26+
However, manual updating is really easy.
27+
Visit the official [Portable Mode][vscode-portable] page for more information.
28+
29+
Alternatively you can pull or build an updated `accetto` image containing the new `Visual Studio Code` version.
30+
931
### Release 23.12
1032

1133
This release brings new images containing the free open-source utility `NVM` (Node Version Manager), which allows installing and using multiple `Node.js` versions concurrently. No `Node.js` version is installed by default.
@@ -459,3 +481,7 @@ This is just a maintenance release.
459481

460482
[sibling-wiki-building-stages]: https://github.com/accetto/ubuntu-vnc-xfce-g3/wiki/Building-stages
461483
[sibling-wiki-how-ci-works]: https://github.com/accetto/ubuntu-vnc-xfce-g3/wiki/How-CI-works
484+
485+
<!-- Other links -->
486+
487+
[vscode-portable]: https://code.visualstudio.com/docs/editor/portable

README.md

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## Project `accetto/headless-coding-g3`
44

5-
Version: G3v3
5+
Version: G3v5
66

77
***
88

@@ -95,11 +95,19 @@ The **first generation** (G1) contains the GitHub repository [accetto/ubuntu-vnc
9595

9696
### Project versions
9797

98-
This file describes the **third version** (G3v3) of the project, which however corresponds to the **fourth version** (G3v4) of the **sibling project** [accetto/ubuntu-vnc-xfce-g3][accetto-github-ubuntu-vnc-xfce-g3].
98+
This file describes the **fifth version** (G3v5) of the project.
99+
100+
*Remark*: The version number `G3v4` has been skipped, to align the numbering with the **sibling project** [accetto/ubuntu-vnc-xfce-g3][accetto-github-ubuntu-vnc-xfce-g3].
99101

100102
The **second version** (G3v2) and the **first version** (G3v1, or simply G3) will still be available in this GitHub repository as the branches `archived-generation-g3v2-ubuntu` and `archived-generation-g3v1`.
103+
The **third version** (G3v3) was not archived, because the changes are minor.
104+
105+
The version `G3v5` brings only one significant change comparing to the previous version `G3v3` and it also introduces the [portable Visual Studio Code][vscode-portable] installation.
101106

102-
The version `G3v3` brings the following major changes comparing to the previous version `G3v2`:
107+
- The updated script `set_user_permissions.sh`, which is part of Dockerfiles, skips the hidden files and directories now.
108+
It generally should not have any unwanted side effects, but it may make a difference in some scenarios, hence the version increase.
109+
110+
The version `G3v3` has brought the following major changes comparing to the previous version `G3v2`:
103111

104112
- The updated startup scripts that support overriding the user ID (`id`) and group ID (`gid`) without needing the former build argument `ARG_FEATURES_USER_GROUP_OVERRIDE`, which has been removed.
105113
- The user ID and the group ID can be overridden during the build time (`docker build`) and the run time (`docker run`).
@@ -226,8 +234,10 @@ Credit goes to all the countless people and companies, who contribute to open so
226234
[firefox]: https://www.mozilla.org
227235
[novnc]: https://github.com/kanaka/noVNC
228236
[tigervnc]: http://tigervnc.org
237+
[vscode-portable]: https://code.visualstudio.com/docs/editor/portable
229238
[xfce]: http://www.xfce.org
230239

240+
231241
[badge-github-release]: https://badgen.net/github/release/accetto/headless-coding-g3?icon=github&label=release
232242

233243
[badge-github-release-date]: https://img.shields.io/github/release-date/accetto/headless-coding-g3?logo=github

docker/Dockerfile.xfce.nodejs

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -364,33 +364,52 @@ EXPOSE "${NODEJS_PORT}"
364364
### stage_vscode
365365
################
366366

367-
FROM stage_nodejs as stage_vscode
367+
FROM merge_stage_browser as stage_vscode
368368
ARG ARG_APT_NO_RECOMMENDS
369+
ARG ARG_VSCODE_DISTRO
370+
ARG ARG_VSCODE_VERSION
371+
ARG ARG_VSCODE_FILE
372+
ARG ARG_VSCODE_PATH
369373

370374
ENV \
371375
DONT_PROMPT_WSL_INSTALL=1 \
372-
FEATURES_VSCODE=1
376+
FEATURES_VSCODE=1 \
377+
VSCODE_PATH="${HOME}/.vscode-portable/code"
373378

374379
RUN \
375380
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/cache/apt,target=/var/cache/apt \
376381
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/lib/apt,target=/var/lib/apt \
377382
DEBIAN_FRONTEND=noninteractive apt-get install -y "${ARG_APT_NO_RECOMMENDS:+--no-install-recommends}" \
383+
curl \
384+
git \
378385
gpg \
379386
libasound2 \
380-
libxshmfence1
387+
libgbm1 \
388+
libnss3
381389

382390
RUN \
383-
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg \
384-
&& install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/ \
385-
&& sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list' \
386-
&& apt-get update \
387-
&& DEBIAN_FRONTEND=noninteractive apt-get install -y \
388-
apt-transport-https \
389-
code \
390-
&& rm -f "${HOME}"/packages.microsoft.gpg
391+
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/cache/apt,target=/var/cache/apt \
392+
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/lib/apt,target=/var/lib/apt \
393+
--mount=type=cache,from=stage_cache,sharing=locked,source=/tmp/g3-cache/,target=/tmp/g3-cache/ \
394+
VSCODE_DISTRO="${ARG_VSCODE_DISTRO}" \
395+
VSCODE_VERSION="${ARG_VSCODE_VERSION}" \
396+
VSCODE_FILE="${ARG_VSCODE_FILE}" \
397+
&& if [ ! -s "/tmp/g3-cache/vscode/${VSCODE_FILE}" ] ; then \
398+
wget --show-progress --progress=bar:force:noscroll \
399+
-q -O "/tmp/g3-cache/vscode/${VSCODE_FILE}" \
400+
"https://update.code.visualstudio.com/${VSCODE_VERSION}/${VSCODE_DISTRO}/stable" \
401+
-P "/tmp/g3-cache/vscode" ; \
402+
fi \
403+
&& mkdir -p "${VSCODE_PATH}" "${VSCODE_PATH}/data" \
404+
&& tar xzf "/tmp/g3-cache/vscode/${VSCODE_FILE}" --strip 1 -C "${VSCODE_PATH}" \
405+
&& ln -s "${VSCODE_PATH}/bin/code" /usr/bin/code
391406

392407
COPY "./xfce-vscode/src/home/Desktop" "${HOME}/Desktop"/
393-
COPY "./xfce-vscode/src/home/config" "${HOME}/.config"/
408+
COPY "./xfce-vscode/src/vscode/data" "${VSCODE_PATH}/data"/
409+
410+
RUN \
411+
envsubst <"${HOME}/Desktop/code.desktop" >/tmp/esub.tmp && mv -f /tmp/esub.tmp "${HOME}/Desktop/code.desktop" \
412+
&& cp "${HOME}/Desktop/code.desktop" /usr/share/applications/
394413

395414

396415
###############
@@ -427,7 +446,7 @@ RUN \
427446
&& echo "${HEADLESS_USER_NAME}:x:${HEADLESS_USER_ID}:${HEADLESS_USER_GROUP_ID}:Default:${HOME}:/bin/bash" >> /etc/passwd \
428447
&& echo "${HEADLESS_USER_NAME} ALL=(ALL:ALL) ALL" | sudo tee /etc/sudoers.d/"${HEADLESS_USER_NAME}" \
429448
&& echo "${ARG_SUDO_INITIAL_PW:-headless}" > "${STARTUPDIR}"/.initial_sudo_password \
430-
&& echo "${HEADLESS_USER_NAME}:$(cat "${STARTUPDIR}"/.initial_sudo_password)" | chpasswd \
449+
&& echo "${HEADLESS_USER_NAME}:$(cat ${STARTUPDIR}/.initial_sudo_password)" | chpasswd \
431450
&& ln -s "${HOME}"/readme.md "${HOME}"/Desktop/README \
432451
&& envsubst <"${HOME}"/Desktop/versionsticker.desktop >/tmp/esub.tmp && mv -f /tmp/esub.tmp "${HOME}"/Desktop/versionsticker.desktop \
433452
&& "${STARTUPDIR}"/set_user_permissions.sh "${STARTUPDIR}" "${HOME}"

docker/Dockerfile.xfce.nvm

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -346,33 +346,53 @@ USER 0
346346
### stage_vscode
347347
################
348348

349-
FROM stage_nvm as stage_vscode
349+
FROM merge_stage_browser as stage_vscode
350350
ARG ARG_APT_NO_RECOMMENDS
351+
ARG ARG_VSCODE_DISTRO
352+
ARG ARG_VSCODE_VERSION
353+
ARG ARG_VSCODE_FILE
354+
ARG ARG_VSCODE_PATH
351355

352356
ENV \
353357
DONT_PROMPT_WSL_INSTALL=1 \
354-
FEATURES_VSCODE=1
358+
FEATURES_VSCODE=1 \
359+
VSCODE_PATH="${HOME}/.vscode-portable/code"
355360

356361
RUN \
357362
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/cache/apt,target=/var/cache/apt \
358363
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/lib/apt,target=/var/lib/apt \
359364
DEBIAN_FRONTEND=noninteractive apt-get install -y "${ARG_APT_NO_RECOMMENDS:+--no-install-recommends}" \
365+
curl \
366+
git \
360367
gpg \
361368
libasound2 \
362-
libxshmfence1
369+
libgbm1 \
370+
libnss3
363371

364372
RUN \
365-
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg \
366-
&& install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/ \
367-
&& sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list' \
368-
&& apt-get update \
369-
&& DEBIAN_FRONTEND=noninteractive apt-get install -y \
370-
apt-transport-https \
371-
code \
372-
&& rm -f "${HOME}"/packages.microsoft.gpg
373+
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/cache/apt,target=/var/cache/apt \
374+
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/lib/apt,target=/var/lib/apt \
375+
--mount=type=cache,from=stage_cache,sharing=locked,source=/tmp/g3-cache/,target=/tmp/g3-cache/ \
376+
VSCODE_DISTRO="${ARG_VSCODE_DISTRO}" \
377+
VSCODE_VERSION="${ARG_VSCODE_VERSION}" \
378+
VSCODE_FILE="${ARG_VSCODE_FILE}" \
379+
&& if [ ! -s "/tmp/g3-cache/vscode/${VSCODE_FILE}" ] ; then \
380+
wget --show-progress --progress=bar:force:noscroll \
381+
-q -O "/tmp/g3-cache/vscode/${VSCODE_FILE}" \
382+
"https://update.code.visualstudio.com/${VSCODE_VERSION}/${VSCODE_DISTRO}/stable" \
383+
-P "/tmp/g3-cache/vscode" ; \
384+
fi \
385+
&& mkdir -p "${VSCODE_PATH}" "${VSCODE_PATH}/data" \
386+
&& tar xzf "/tmp/g3-cache/vscode/${VSCODE_FILE}" --strip 1 -C "${VSCODE_PATH}" \
387+
&& ln -s "${VSCODE_PATH}/bin/code" /usr/bin/code
373388

374389
COPY "./xfce-vscode/src/home/Desktop" "${HOME}/Desktop"/
375-
COPY "./xfce-vscode/src/home/config" "${HOME}/.config"/
390+
COPY "./xfce-vscode/src/vscode/data" "${VSCODE_PATH}/data"/
391+
392+
RUN \
393+
envsubst <"${HOME}/Desktop/code.desktop" >/tmp/esub.tmp && mv -f /tmp/esub.tmp "${HOME}/Desktop/code.desktop" \
394+
&& cp "${HOME}/Desktop/code.desktop" /usr/share/applications/
395+
376396

377397
###############
378398
### FINAL STAGE
@@ -408,7 +428,7 @@ RUN \
408428
&& echo "${HEADLESS_USER_NAME}:x:${HEADLESS_USER_ID}:${HEADLESS_USER_GROUP_ID}:Default:${HOME}:/bin/bash" >> /etc/passwd \
409429
&& echo "${HEADLESS_USER_NAME} ALL=(ALL:ALL) ALL" | sudo tee /etc/sudoers.d/"${HEADLESS_USER_NAME}" \
410430
&& echo "${ARG_SUDO_INITIAL_PW:-headless}" > "${STARTUPDIR}"/.initial_sudo_password \
411-
&& echo "${HEADLESS_USER_NAME}:$(cat "${STARTUPDIR}"/.initial_sudo_password)" | chpasswd \
431+
&& echo "${HEADLESS_USER_NAME}:$(cat ${STARTUPDIR}/.initial_sudo_password)" | chpasswd \
412432
&& ln -s "${HOME}"/readme.md "${HOME}"/Desktop/README \
413433
&& envsubst <"${HOME}"/Desktop/versionsticker.desktop >/tmp/esub.tmp && mv -f /tmp/esub.tmp "${HOME}"/Desktop/versionsticker.desktop \
414434
&& "${STARTUPDIR}"/set_user_permissions.sh "${STARTUPDIR}" "${HOME}"

docker/Dockerfile.xfce.postman

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,7 @@ RUN \
394394
&& echo "${HEADLESS_USER_NAME}:x:${HEADLESS_USER_ID}:${HEADLESS_USER_GROUP_ID}:Default:${HOME}:/bin/bash" >> /etc/passwd \
395395
&& echo "${HEADLESS_USER_NAME} ALL=(ALL:ALL) ALL" | sudo tee /etc/sudoers.d/"${HEADLESS_USER_NAME}" \
396396
&& echo "${ARG_SUDO_INITIAL_PW:-headless}" > "${STARTUPDIR}"/.initial_sudo_password \
397-
&& echo "${HEADLESS_USER_NAME}:$(cat "${STARTUPDIR}"/.initial_sudo_password)" | chpasswd \
397+
&& echo "${HEADLESS_USER_NAME}:$(cat ${STARTUPDIR}/.initial_sudo_password)" | chpasswd \
398398
&& ln -s "${HOME}"/readme.md "${HOME}"/Desktop/README \
399399
&& envsubst <"${HOME}"/Desktop/versionsticker.desktop >/tmp/esub.tmp && mv -f /tmp/esub.tmp "${HOME}"/Desktop/versionsticker.desktop \
400400
&& "${STARTUPDIR}"/set_user_permissions.sh "${STARTUPDIR}" "${HOME}"

docker/Dockerfile.xfce.python

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -339,33 +339,52 @@ COPY ./xfce-python/src/samples "${HOME}"/projects/samples
339339
### stage_vscode
340340
################
341341

342-
FROM stage_python as stage_vscode
342+
FROM merge_stage_browser as stage_vscode
343343
ARG ARG_APT_NO_RECOMMENDS
344+
ARG ARG_VSCODE_DISTRO
345+
ARG ARG_VSCODE_VERSION
346+
ARG ARG_VSCODE_FILE
347+
ARG ARG_VSCODE_PATH
344348

345349
ENV \
346350
DONT_PROMPT_WSL_INSTALL=1 \
347-
FEATURES_VSCODE=1
351+
FEATURES_VSCODE=1 \
352+
VSCODE_PATH="${HOME}/.vscode-portable/code"
348353

349354
RUN \
350355
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/cache/apt,target=/var/cache/apt \
351356
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/lib/apt,target=/var/lib/apt \
352357
DEBIAN_FRONTEND=noninteractive apt-get install -y "${ARG_APT_NO_RECOMMENDS:+--no-install-recommends}" \
358+
curl \
359+
git \
353360
gpg \
354361
libasound2 \
355-
libxshmfence1
362+
libgbm1 \
363+
libnss3
356364

357365
RUN \
358-
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg \
359-
&& install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/ \
360-
&& sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list' \
361-
&& apt-get update \
362-
&& DEBIAN_FRONTEND=noninteractive apt-get install -y \
363-
apt-transport-https \
364-
code \
365-
&& rm -f "${HOME}"/packages.microsoft.gpg
366+
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/cache/apt,target=/var/cache/apt \
367+
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/lib/apt,target=/var/lib/apt \
368+
--mount=type=cache,from=stage_cache,sharing=locked,source=/tmp/g3-cache/,target=/tmp/g3-cache/ \
369+
VSCODE_DISTRO="${ARG_VSCODE_DISTRO}" \
370+
VSCODE_VERSION="${ARG_VSCODE_VERSION}" \
371+
VSCODE_FILE="${ARG_VSCODE_FILE}" \
372+
&& if [ ! -s "/tmp/g3-cache/vscode/${VSCODE_FILE}" ] ; then \
373+
wget --show-progress --progress=bar:force:noscroll \
374+
-q -O "/tmp/g3-cache/vscode/${VSCODE_FILE}" \
375+
"https://update.code.visualstudio.com/${VSCODE_VERSION}/${VSCODE_DISTRO}/stable" \
376+
-P "/tmp/g3-cache/vscode" ; \
377+
fi \
378+
&& mkdir -p "${VSCODE_PATH}" "${VSCODE_PATH}/data" \
379+
&& tar xzf "/tmp/g3-cache/vscode/${VSCODE_FILE}" --strip 1 -C "${VSCODE_PATH}" \
380+
&& ln -s "${VSCODE_PATH}/bin/code" /usr/bin/code
366381

367382
COPY "./xfce-vscode/src/home/Desktop" "${HOME}/Desktop"/
368-
COPY "./xfce-vscode/src/home/config" "${HOME}/.config"/
383+
COPY "./xfce-vscode/src/vscode/data" "${VSCODE_PATH}/data"/
384+
385+
RUN \
386+
envsubst <"${HOME}/Desktop/code.desktop" >/tmp/esub.tmp && mv -f /tmp/esub.tmp "${HOME}/Desktop/code.desktop" \
387+
&& cp "${HOME}/Desktop/code.desktop" /usr/share/applications/
369388

370389

371390
###############
@@ -401,7 +420,7 @@ RUN \
401420
&& echo "${HEADLESS_USER_NAME}:x:${HEADLESS_USER_ID}:${HEADLESS_USER_GROUP_ID}:Default:${HOME}:/bin/bash" >> /etc/passwd \
402421
&& echo "${HEADLESS_USER_NAME} ALL=(ALL:ALL) ALL" | sudo tee /etc/sudoers.d/"${HEADLESS_USER_NAME}" \
403422
&& echo "${ARG_SUDO_INITIAL_PW:-headless}" > "${STARTUPDIR}"/.initial_sudo_password \
404-
&& echo "${HEADLESS_USER_NAME}:$(cat "${STARTUPDIR}"/.initial_sudo_password)" | chpasswd \
423+
&& echo "${HEADLESS_USER_NAME}:$(cat ${STARTUPDIR}/.initial_sudo_password)" | chpasswd \
405424
&& ln -s "${HOME}"/readme.md "${HOME}"/Desktop/README \
406425
&& envsubst <"${HOME}"/Desktop/versionsticker.desktop >/tmp/esub.tmp && mv -f /tmp/esub.tmp "${HOME}"/Desktop/versionsticker.desktop \
407426
&& "${STARTUPDIR}"/set_user_permissions.sh "${STARTUPDIR}" "${HOME}"

docker/Dockerfile.xfce.vscode

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -314,10 +314,15 @@ FROM ${ARG_MERGE_STAGE_BROWSER_BASE} as merge_stage_browser
314314

315315
FROM merge_stage_browser as stage_vscode
316316
ARG ARG_APT_NO_RECOMMENDS
317+
ARG ARG_VSCODE_DISTRO
318+
ARG ARG_VSCODE_VERSION
319+
ARG ARG_VSCODE_FILE
320+
ARG ARG_VSCODE_PATH
317321

318322
ENV \
319323
DONT_PROMPT_WSL_INSTALL=1 \
320-
FEATURES_VSCODE=1
324+
FEATURES_VSCODE=1 \
325+
VSCODE_PATH="${HOME}/.vscode-portable/code"
321326

322327
RUN \
323328
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/cache/apt,target=/var/cache/apt \
@@ -327,20 +332,32 @@ RUN \
327332
git \
328333
gpg \
329334
libasound2 \
330-
libxshmfence1
335+
libgbm1 \
336+
libnss3
331337

332338
RUN \
333-
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg \
334-
&& install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/ \
335-
&& sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list' \
336-
&& apt-get update \
337-
&& DEBIAN_FRONTEND=noninteractive apt-get install -y \
338-
apt-transport-https \
339-
code \
340-
&& rm -f "${HOME}"/packages.microsoft.gpg
339+
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/cache/apt,target=/var/cache/apt \
340+
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/lib/apt,target=/var/lib/apt \
341+
--mount=type=cache,from=stage_cache,sharing=locked,source=/tmp/g3-cache/,target=/tmp/g3-cache/ \
342+
VSCODE_DISTRO="${ARG_VSCODE_DISTRO}" \
343+
VSCODE_VERSION="${ARG_VSCODE_VERSION}" \
344+
VSCODE_FILE="${ARG_VSCODE_FILE}" \
345+
&& if [ ! -s "/tmp/g3-cache/vscode/${VSCODE_FILE}" ] ; then \
346+
wget --show-progress --progress=bar:force:noscroll \
347+
-q -O "/tmp/g3-cache/vscode/${VSCODE_FILE}" \
348+
"https://update.code.visualstudio.com/${VSCODE_VERSION}/${VSCODE_DISTRO}/stable" \
349+
-P "/tmp/g3-cache/vscode" ; \
350+
fi \
351+
&& mkdir -p "${VSCODE_PATH}" "${VSCODE_PATH}/data" \
352+
&& tar xzf "/tmp/g3-cache/vscode/${VSCODE_FILE}" --strip 1 -C "${VSCODE_PATH}" \
353+
&& ln -s "${VSCODE_PATH}/bin/code" /usr/bin/code
341354

342355
COPY "./xfce-vscode/src/home/Desktop" "${HOME}/Desktop"/
343-
COPY "./xfce-vscode/src/home/config" "${HOME}/.config"/
356+
COPY "./xfce-vscode/src/vscode/data" "${VSCODE_PATH}/data"/
357+
358+
RUN \
359+
envsubst <"${HOME}/Desktop/code.desktop" >/tmp/esub.tmp && mv -f /tmp/esub.tmp "${HOME}/Desktop/code.desktop" \
360+
&& cp "${HOME}/Desktop/code.desktop" /usr/share/applications/
344361

345362

346363
###############
@@ -376,7 +393,7 @@ RUN \
376393
&& echo "${HEADLESS_USER_NAME}:x:${HEADLESS_USER_ID}:${HEADLESS_USER_GROUP_ID}:Default:${HOME}:/bin/bash" >> /etc/passwd \
377394
&& echo "${HEADLESS_USER_NAME} ALL=(ALL:ALL) ALL" | sudo tee /etc/sudoers.d/"${HEADLESS_USER_NAME}" \
378395
&& echo "${ARG_SUDO_INITIAL_PW:-headless}" > "${STARTUPDIR}"/.initial_sudo_password \
379-
&& echo "${HEADLESS_USER_NAME}:$(cat "${STARTUPDIR}"/.initial_sudo_password)" | chpasswd \
396+
&& echo "${HEADLESS_USER_NAME}:$(cat ${STARTUPDIR}/.initial_sudo_password)" | chpasswd \
380397
&& ln -s "${HOME}"/readme.md "${HOME}"/Desktop/README \
381398
&& envsubst <"${HOME}"/Desktop/versionsticker.desktop >/tmp/esub.tmp && mv -f /tmp/esub.tmp "${HOME}"/Desktop/versionsticker.desktop \
382399
&& "${STARTUPDIR}"/set_user_permissions.sh "${STARTUPDIR}" "${HOME}"

0 commit comments

Comments
 (0)