21 Commits

Author SHA1 Message Date
d6a0039cda Merge branch 'master' of https://gitea.akanealw.com/akanealw/debian-vnc-xfce-g3 2024-04-01 22:37:53 +00:00
824f644575 scripts to build 2024-04-01 22:37:31 +00:00
e1b16e2d2b testing 2024-03-29 03:26:57 -05:00
30f7683720 corrected tag and customized dockerfiles 2024-01-30 07:16:49 -06:00
0c4e90b0ae added build scripts 2024-01-30 07:05:32 -06:00
c8046f0424 edited and moved secrets file 2024-01-30 06:59:58 -06:00
b8ec8e4c7e changed variables 2024-01-29 20:21:37 -06:00
aa7ac5670c changed secrets 2024-01-29 20:18:30 -06:00
4d6be40370 removed secrets filters 2024-01-29 20:01:07 -06:00
0edb92f1de exclude secrets files 2024-01-29 19:47:43 -06:00
71ecf06dd8 changed executables 2024-01-29 19:43:18 -06:00
accetto
93515c7dfa Release 23.12 2023-12-06 17:25:37 +01:00
accetto
bdacf64e1d Release 23.11 2023-11-19 11:04:50 +01:00
accetto
5222ada048 more die-fast error handling 2023-11-19 09:54:19 +01:00
accetto
1498941651 added default 'bashrc' 2023-11-19 09:52:51 +01:00
accetto
fb8a52cd7a just cosmetics 2023-08-19 12:17:21 +02:00
accetto
ac70dbfc74 CHANGELOG updated 2023-08-19 10:38:15 +02:00
accetto
39e366dea2 ci-builder.sh: pivotal group extended 2023-08-19 10:36:48 +02:00
accetto
b37eeeb65f Release 23.08.1, Milestone with Debian 12 2023-08-18 17:47:58 +02:00
accetto
a3dcc36bf9 fix in ci-builder.sh help mode 2023-08-12 16:48:11 +02:00
accetto
931ef78dc6 readme files updated 2023-08-06 11:29:27 +02:00
74 changed files with 912 additions and 114 deletions

0
.gitattributes vendored Normal file → Executable file
View File

2
.gitignore vendored Normal file → Executable file
View File

@@ -23,6 +23,6 @@
avanti*
debug*
scrap*
secret*
#secret*
TODO*
*.log

42
CHANGELOG.md Normal file → Executable file
View File

@@ -6,6 +6,48 @@
***
### Release 23.12
This is a maintenance release.
- Updated Dockerfiles
- file `.bashrc` is created earlier (stage `merge_stage_vnc`)
- Updated file `example-secrets.rc`
- removed the initialization of the variables `FORCE_BUILDING` and `FORCE_PUBLISHING_BUILDER_REPO` (unset means `0`)
- the variables are still used as before, but now they can be set individually for each building/publishing run
### Release 23.11
- Added file `$HOME/.bashrc` to all images.
It contains examples of custom aliases
- `ll` - just `ls -l`
- `cls` - clears the terminal window
- `ps1` - sets the command prompt text
- Added more 'die-fast' error handling into the building and publishing scripts.
They exit immediately if the image building or pushing commands fail.
### Release 23.08.1 (Milestone)
This release brings new images based on the current **Debian 12**.
The images based on the previous **Debian 11** will still be published into the same repositories.
Other changes:
- hook scripts `env.rc`, `push` and `post_push` have been updated
- handling of multiple deployment tags per image has been improved and it covers also publishing into the builder repository now
- also less image pollution by publishing
- file `readme-local-building-example.md` got a new section `Tips and examples`, containing
- `How to deploy all images into one repository`
Main updated components:
- `Debian` to version **12.1**
- `Xfce` desktop to version **4.18**
- `Mousepad` to version **0.5.10**
- `nano` to version **7.2**
- `Python` to version **3.11.2**
### Release 23.08
This release brings updated and significantly shortened README files, because most of the content has been moved into the new [User guide][this-user-guide].

0
LICENSE Normal file → Executable file
View File

6
README.md Normal file → Executable file
View File

@@ -35,9 +35,11 @@ Version: G3v1
This GitHub repository contains resources and tools for building Docker images for headless working.
The images are based on [Debian 11][docker-debian] and include [Xfce][xfce] desktop, [TigerVNC][tigervnc] server and [noVNC][novnc] client.
The images are based on the current [Debian 12][docker-debian] and the previous [Debian 11][docker-debian] and include [Xfce][xfce] desktop, [TigerVNC][tigervnc] server and [noVNC][novnc] client.
The popular web browsers [Chromium][chromium] and [Firefox][firefox] are also included.
This [User guide][this-user-guide] describes the images and how to use them.
The content of this GitHub project is intended for developers and image builders.
Ordinary users can simply use the images available in the following repositories on Docker Hub:
@@ -46,8 +48,6 @@ Ordinary users can simply use the images available in the following repositories
- [accetto/debian-vnc-xfce-chromium-g3][accetto-docker-debian-vnc-xfce-chromium-g3]
- [accetto/debian-vnc-xfce-firefox-g3][accetto-docker-debian-vnc-xfce-firefox-g3]
This [User guide][this-user-guide] describes the images and how to use them.
This project has been derived from the sibling project [accetto/ubuntu-vnc-xfce-g3][accetto-github-ubuntu-vnc-xfce-g3] containing similar images based on [Ubuntu 22.04 LTS and 20.04 LTS][docker-ubuntu].
### Building images

View File

@@ -0,0 +1,5 @@
#!/bin/bash
./builder.sh latest pre_build
./builder.sh latest build
docker push repo.aknlw.com/akanealw/debian-vnc-xfce:latest

View File

@@ -0,0 +1,5 @@
#!/bin/bash
./builder.sh latest-chromium pre_build
./builder.sh latest-chromium build
docker push repo.aknlw.com/akanealw/debian-vnc-xfce:latest-chromium

View File

@@ -0,0 +1,5 @@
#!/bin/bash
./builder.sh latest-firefox pre_build
./builder.sh latest-firefox build
docker push repo.aknlw.com/akanealw/debian-vnc-xfce:latest-firefox-default

6
builder.sh Normal file → Executable file
View File

@@ -1,6 +1,6 @@
#!/bin/bash -e
### @accetto, August 2021
### updated: September 2022, January 2023
### updated: August 2023
### depends on the hook scripts
### set the environment variables first, e.g. 'source .secrets'
@@ -12,7 +12,7 @@ die() {
local -i code=${2:-1}
local place="${3:-$0}"
echo -e "EXITING '${place}' with code ${code}: ${message}" >&2
echo -e "EXITING at line "${BASH_LINENO[0]}" in '${place}' with code ${code}: ${message}" >&2
exit ${code}
}
@@ -44,7 +44,7 @@ This script can:
Usage: $0 <blend> <command> [<docker-cli-options>]
blend := (latest[-chromium|-firefox])
blend := (latest|bookworm|bullseye)[-chromium|-firefox])
command := (all|all-no-push)|(pre_build|build|push|post_push|cache)
The <docker-cli-options> (e.g. '--no-cache') are passed to the Docker CLI commands used internally.

45
ci-builder.sh Normal file → Executable file
View File

@@ -1,7 +1,7 @@
#!/bin/bash
### do not use '-e'
### @accetto, September 2022
### updated: July 2023
### updated: August 2023
### depends on the script 'builder.sh'
### set the environment variables first, e.g. 'source .secrets'
@@ -13,7 +13,7 @@ die() {
local -i code=${2:-1}
local place="${3:-$0}"
echo -e "\nEXITING '${place}' with code ${code}: ${message}\n" >&2
echo -e "\nEXITING at line "${BASH_LINENO[0]}" in '${place}' with code ${code}: ${message}\n" >&2
exit ${code}
}
@@ -101,9 +101,9 @@ Usage: <script> <mode> <argument> [<optional-argument>]...
<command> := (all|all-no-push)
<mode> := (group|family)
<blend> := pivotal
|(complete[-latest|-chromium|-firefox])
|(latest[-chromium|-firefox])
<parent-blend> := (complete)|(latest[-chromium|-firefox])
|(complete[-latest|-bookworm|-bullseye|-chromium|-firefox])
|(latest|bookworm|bullseye[-chromium|-firefox])
<parent-blend> := (complete)|(latest|bookworm|bullseye[-chromium|-firefox])
<child-suffix> := depends on context, e.g. '-ver1|-ver2' (currently none supported)
Group mode : All images are processed independently.
@@ -253,6 +253,7 @@ main() {
help | --help | -h )
show_unlogged_help
return 0
;;
log )
@@ -288,28 +289,48 @@ main() {
pivotal )
clear_log
build_group "${command}" "latest" "latest-firefox" "latest-chromium"
build_group "${command}" "latest" "bullseye" "latest-firefox" "bullseye-firefox" "latest-chromium" "bullseye-chromium"
;;
complete | complete-latest )
complete )
clear_log
build_group "${command}" "latest" "bullseye" "latest-firefox" "bullseye-firefox" "latest-chromium" "bullseye-chromium"
;;
complete-latest )
clear_log
build_group "${command}" "latest" "latest-firefox" "latest-chromium"
;;
complete-bookworm )
clear_log
build_group "${command}" "bookworm" "bookworm-firefox" "bookworm-chromium"
;;
complete-bullseye )
clear_log
build_group "${command}" "bullseye" "bullseye-firefox" "bullseye-chromium"
;;
complete-chromium )
clear_log
build_group "${command}" "latest-chromium"
build_group "${command}" "latest-chromium" "bullseye-chromium"
;;
complete-firefox )
clear_log
build_group "${command}" "latest-firefox"
build_group "${command}" "latest-firefox" "bullseye-firefox"
;;
latest | latest-chromium | latest-firefox )
latest | latest-chromium | latest-firefox \
| bookworm | bookworm-chromium | bookworm-firefox \
| bullseye | bullseye-chromium | bullseye-firefox )
clear_log
build_group "${command}" "${subject}" $@
@@ -334,7 +355,9 @@ main() {
build_family "${command}" "latest-chromium"
;;
latest | latest-chromium | latest-firefox )
latest | latest-chromium | latest-firefox \
| bookworm | bookworm-chromium | bookworm-firefox \
| bullseye | bullseye-chromium | bullseye-firefox )
clear_log
build_family "${command}" "${subject}" $@

1
docker/.dockerignore Normal file → Executable file
View File

@@ -2,3 +2,4 @@
!src
!xfce*
!.g3-cache

0
docker/Dockerfile Normal file → Executable file
View File

12
docker/Dockerfile.xfce → docker/Dockerfile.xfce.11 Normal file → Executable file
View File

@@ -8,9 +8,9 @@ ARG ARG_MERGE_STAGE_BROWSER_BASE=merge_stage_vnc
ARG ARG_FINAL_STAGE_BASE=merge_stage_browser
ARG ARG_HEADLESS_USER_ID=1000
ARG ARG_HEADLESS_USER_NAME=headless
ARG ARG_HEADLESS_USER_NAME=akanealw
ARG ARG_HEADLESS_USER_GROUP_ID=1000
ARG ARG_HEADLESS_USER_GROUP_NAME=headless
ARG ARG_HEADLESS_USER_GROUP_NAME=akanealw
ARG ARG_SUDO_INITIAL_PW=headless
@@ -91,7 +91,9 @@ RUN \
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/lib/apt,target=/var/lib/apt \
DEBIAN_FRONTEND=noninteractive apt-get install -y "${ARG_APT_NO_RECOMMENDS:+--no-install-recommends}" \
xfce4 \
xfce4-terminal
xfce4-terminal \
gnome-themes-extra \
gnome-themes-extra-data
###############
@@ -209,7 +211,6 @@ RUN echo \
<meta charset=\"utf-8\"/>\n\
</head>\n\
<body>\n\
<p><a href=\"vnc_lite.html\">noVNC Lite Client</a></p>\n\
<p><a href=\"vnc.html\">noVNC Full Client</a></p>\n\
</body>\n\
</html>" \
@@ -237,6 +238,9 @@ ENV \
WORKDIR "${HOME}"
### add '.bashrc' and similar resources
COPY ./src/home "${HOME}"/
##################
### stage_chromium

385
docker/Dockerfile.xfce.12 Executable file
View File

@@ -0,0 +1,385 @@
# syntax=docker/dockerfile:experimental
ARG BASEIMAGE=debian
ARG BASETAG=12-slim
ARG ARG_MERGE_STAGE_VNC_BASE=stage_vnc
ARG ARG_MERGE_STAGE_BROWSER_BASE=merge_stage_vnc
ARG ARG_FINAL_STAGE_BASE=merge_stage_browser
ARG ARG_HEADLESS_USER_ID=1000
ARG ARG_HEADLESS_USER_NAME=akanealw
ARG ARG_HEADLESS_USER_GROUP_ID=1000
ARG ARG_HEADLESS_USER_GROUP_NAME=akanealw
ARG ARG_SUDO_INITIAL_PW=headless
###############
### stage_cache
###############
FROM ${BASEIMAGE}:${BASETAG} as stage_cache
### refresh the 'apt' cache
RUN rm -f /etc/apt/apt.conf.d/docker-clean ; \
echo 'Binary::apt::APT::Keep-Downloaded-Packages "true" ;' > /etc/apt/apt.conf.d/keep-cache
RUN apt-get update
### embed the local '.g3-cache' from the build context
### note that the bound cache '/tmp/cache2' is ephemeral and all written data will be discarded automatically
### therefore copy its content into the another permanent cache '/tmp/g3-cache'
RUN \
--mount=type=bind,target=/tmp/cache2 \
mkdir -p /tmp/g3-cache \
&& if [ -d /tmp/cache2/.g3-cache/ ] ; then cp -r /tmp/cache2/.g3-cache/* /tmp/g3-cache/ ; fi
####################
### stage_essentials
####################
FROM ${BASEIMAGE}:${BASETAG} as stage_essentials
RUN \
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/cache/apt,target=/var/cache/apt \
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/lib/apt,target=/var/lib/apt \
DEBIAN_FRONTEND=noninteractive apt-get install -y \
gettext-base \
gir1.2-rsvg-2.0 \
jq \
nano \
procps \
psmisc \
sudo \
tini \
wget
#################
### stage_xserver
#################
FROM stage_essentials as stage_xserver
ARG ARG_APT_NO_RECOMMENDS
ENV \
FEATURES_BUILD_SLIM_XSERVER="${ARG_APT_NO_RECOMMENDS:+1}" \
NO_AT_BRIDGE=1
RUN \
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/cache/apt,target=/var/cache/apt \
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/lib/apt,target=/var/lib/apt \
DEBIAN_FRONTEND=noninteractive apt-get install -y "${ARG_APT_NO_RECOMMENDS:+--no-install-recommends}" \
dbus-x11 \
xauth \
xinit \
x11-xserver-utils \
xdg-utils
##############
### stage_xfce
##############
FROM stage_xserver as stage_xfce
ARG ARG_APT_NO_RECOMMENDS
ENV FEATURES_BUILD_SLIM_XFCE="${ARG_APT_NO_RECOMMENDS:+1}"
RUN \
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/cache/apt,target=/var/cache/apt \
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/lib/apt,target=/var/lib/apt \
DEBIAN_FRONTEND=noninteractive apt-get install -y "${ARG_APT_NO_RECOMMENDS:+--no-install-recommends}" \
xfce4 \
xfce4-terminal \
gnome-themes-extra \
gnome-themes-extra-data
###############
### stage_tools
###############
FROM stage_xfce as stage_tools
ARG ARG_APT_NO_RECOMMENDS
ARG ARG_FEATURES_SCREENSHOOTING
ARG ARG_FEATURES_THUMBNAILING
ENV \
FEATURES_BUILD_SLIM_TOOLS="${ARG_APT_NO_RECOMMENDS:+1}" \
FEATURES_SCREENSHOOTING="${ARG_FEATURES_SCREENSHOOTING:+1}" \
FEATURES_THUMBNAILING="${ARG_FEATURES_THUMBNAILING:+1}"
RUN \
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/cache/apt,target=/var/cache/apt \
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/lib/apt,target=/var/lib/apt \
DEBIAN_FRONTEND=noninteractive apt-get install -y "${ARG_APT_NO_RECOMMENDS:+--no-install-recommends}" \
mousepad \
python3 \
systemctl \
"${ARG_FEATURES_SCREENSHOOTING:+ristretto}" \
"${ARG_FEATURES_SCREENSHOOTING:+xfce4-screenshooter}" \
"${ARG_FEATURES_THUMBNAILING:+tumbler}"
#############
### stage_vnc
#############
FROM stage_tools as stage_vnc
ARG ARG_VNC_COL_DEPTH
ARG ARG_VNC_DISPLAY
ARG ARG_VNC_PORT
ARG ARG_VNC_PW
ARG ARG_VNC_RESOLUTION
ARG ARG_VNC_VIEW_ONLY
ARG ARG_TIGERVNC_DISTRO
ARG ARG_TIGERVNC_VERSION
RUN \
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/cache/apt,target=/var/cache/apt \
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/lib/apt,target=/var/lib/apt \
--mount=type=cache,from=stage_cache,sharing=locked,source=/tmp/g3-cache/,target=/tmp/g3-cache/ \
TIGERVNC_VERSION="${ARG_TIGERVNC_VERSION}" \
TIGERVNC_DISTRO="${ARG_TIGERVNC_DISTRO}" \
&& if [ ! -s /tmp/g3-cache/tigervnc/tigervnc-"${TIGERVNC_VERSION}"."${TIGERVNC_DISTRO}".tar.gz ] ; then \
wget --show-progress --progress=bar:force:noscroll \
-q https://sourceforge.net/projects/tigervnc/files/stable/"${TIGERVNC_VERSION}"/tigervnc-"${TIGERVNC_VERSION}"."${TIGERVNC_DISTRO}".tar.gz \
-P /tmp/g3-cache/tigervnc ; \
fi \
&& tar xzf /tmp/g3-cache/tigervnc/tigervnc-"${TIGERVNC_VERSION}"."${TIGERVNC_DISTRO}".tar.gz --strip 1 -C / \
&& ln -s /usr/libexec/vncserver /usr/bin/vncserver \
&& sed -i 's/exec(@cmd);/print "@cmd";\nexec(@cmd);/g' /usr/libexec/vncserver
ENV \
DISPLAY="${ARG_VNC_DISPLAY:-:1}" \
FEATURES_VNC=1 \
VNC_COL_DEPTH="${ARG_VNC_COL_DEPTH:-24}" \
VNC_PORT="${ARG_VNC_PORT:-5901}" \
VNC_PW="${ARG_VNC_PW:-headless}" \
VNC_RESOLUTION="${ARG_VNC_RESOLUTION:-1360x768}" \
VNC_VIEW_ONLY="${ARG_VNC_VIEW_ONLY:-false}"
EXPOSE "${VNC_PORT}"
###############
### stage_novnc
###############
FROM stage_vnc as stage_novnc
ARG ARG_APT_NO_RECOMMENDS
ARG ARG_NOVNC_PORT
ARG ARG_NOVNC_VERSION
ARG ARG_WEBSOCKIFY_VERSION
ENV \
FEATURES_BUILD_SLIM_NOVNC="${ARG_APT_NO_RECOMMENDS:+1}" \
FEATURES_NOVNC=1 \
NOVNC_HOME="/usr/libexec/noVNCdim" \
NOVNC_PORT="${ARG_NOVNC_PORT:-6901}"
RUN \
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/cache/apt,target=/var/cache/apt \
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/lib/apt,target=/var/lib/apt \
--mount=type=cache,from=stage_cache,sharing=locked,source=/tmp/g3-cache/,target=/tmp/g3-cache/ \
DEBIAN_FRONTEND=noninteractive apt-get install -y "${ARG_APT_NO_RECOMMENDS:+--no-install-recommends}" \
python3-numpy \
&& mkdir -p "${NOVNC_HOME}"/utils/websockify \
&& NOVNC_VERSION="${ARG_NOVNC_VERSION}" \
&& WEBSOCKIFY_VERSION="${ARG_WEBSOCKIFY_VERSION}" \
&& if [ ! -s /tmp/g3-cache/novnc/v"${NOVNC_VERSION}".tar.gz ] ; then \
wget --show-progress --progress=bar:force:noscroll \
-q https://github.com/novnc/noVNC/archive/v"${NOVNC_VERSION}".tar.gz \
-P /tmp/g3-cache/novnc ; \
fi \
&& if [ ! -s /tmp/g3-cache/websockify/v"${WEBSOCKIFY_VERSION}".tar.gz ] ; then \
wget --show-progress --progress=bar:force:noscroll \
-q https://github.com/novnc/websockify/archive/v"${WEBSOCKIFY_VERSION}".tar.gz \
-P /tmp/g3-cache/websockify ; \
fi \
&& tar xzf /tmp/g3-cache/novnc/v"${NOVNC_VERSION}".tar.gz --strip 1 -C "${NOVNC_HOME}" \
&& tar xzf /tmp/g3-cache/websockify/v"${WEBSOCKIFY_VERSION}".tar.gz --strip 1 -C "${NOVNC_HOME}"/utils/websockify \
&& chmod 755 -v "${NOVNC_HOME}"/utils/novnc_proxy
### add 'index.html' for choosing noVNC client
RUN echo \
"<!DOCTYPE html>\n\
<html>\n\
<head>\n\
<title>noVNC</title>\n\
<meta charset=\"utf-8\"/>\n\
</head>\n\
<body>\n\
<p><a href=\"vnc.html\">noVNC Full Client</a></p>\n\
</body>\n\
</html>" \
> "${NOVNC_HOME}"/index.html
EXPOSE "${NOVNC_PORT}"
###################
### merge_stage_vnc
###################
FROM ${ARG_MERGE_STAGE_VNC_BASE} as merge_stage_vnc
ARG ARG_HEADLESS_USER_ID
ARG ARG_HEADLESS_USER_NAME
ARG ARG_HEADLESS_USER_GROUP_ID
ARG ARG_HEADLESS_USER_GROUP_NAME
ENV \
HEADLESS_USER_ID="${ARG_HEADLESS_USER_ID}" \
HEADLESS_USER_NAME="${ARG_HEADLESS_USER_NAME}" \
HEADLESS_USER_GROUP_ID="${ARG_HEADLESS_USER_GROUP_ID}" \
HEADLESS_USER_GROUP_NAME="${ARG_HEADLESS_USER_GROUP_NAME}" \
HOME="${ARG_HOME:-/home/${ARG_HEADLESS_USER_NAME}}"
WORKDIR "${HOME}"
### add '.bashrc' and similar resources
COPY ./src/home "${HOME}"/
##################
### stage_chromium
##################
FROM merge_stage_vnc as stage_chromium
ARG ARG_APT_NO_RECOMMENDS
ENV \
FEATURES_BUILD_SLIM_CHROMIUM="${ARG_APT_NO_RECOMMENDS:+1}" \
FEATURES_CHROMIUM=1
RUN \
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/cache/apt,target=/var/cache/apt \
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/lib/apt,target=/var/lib/apt \
DEBIAN_FRONTEND=noninteractive apt-get install -y "${ARG_APT_NO_RECOMMENDS:+--no-install-recommends}" \
chromium
COPY ./xfce-chromium/src/home/Desktop "${HOME}"/Desktop/
COPY ./xfce-chromium/src/home/readme*.md "${HOME}"/
#################
### stage_firefox
#################
FROM merge_stage_vnc as stage_firefox
ARG ARG_APT_NO_RECOMMENDS
ENV \
FEATURES_BUILD_SLIM_FIREFOX="${ARG_APT_NO_RECOMMENDS:+1}" \
FEATURES_FIREFOX=1
RUN \
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/cache/apt,target=/var/cache/apt \
--mount=type=cache,from=stage_cache,sharing=locked,source=/var/lib/apt,target=/var/lib/apt \
DEBIAN_FRONTEND=noninteractive apt-get install -y "${ARG_APT_NO_RECOMMENDS:+--no-install-recommends}" \
firefox-esr
COPY ./xfce-firefox/src/home/Desktop "${HOME}"/Desktop/
### ##################
### stage_firefox_plus
### ##################
FROM stage_firefox as stage_firefox_plus
ENV FEATURES_FIREFOX_PLUS=1
COPY ./xfce-firefox/src/firefox.plus/home/Desktop "${HOME}"/Desktop/
COPY ./xfce-firefox/src/firefox.plus/resources "${HOME}"/firefox.plus/
COPY ./xfce-firefox/src/firefox.plus/home/readme*.md "${HOME}"/
RUN \
chmod 744 "${HOME}"/firefox.plus/*.sh \
&& envsubst <"${HOME}/Desktop/Copy FF Preferences.desktop" >/tmp/esub.tmp && mv -f /tmp/esub.tmp "${HOME}/Desktop/Copy FF Preferences.desktop" \
&& install -o root -g root -m 644 "${HOME}"/firefox.plus/accetto.svg /usr/share/icons/hicolor/scalable/apps/ \
&& gtk-update-icon-cache -f /usr/share/icons/hicolor
#######################
### merge_stage_browser
#######################
FROM ${ARG_MERGE_STAGE_BROWSER_BASE} as merge_stage_browser
###############
### FINAL STAGE
###############
FROM ${ARG_FINAL_STAGE_BASE} as stage_final
ARG ARG_FEATURES_OVERRIDING_ENVV
ARG ARG_SUDO_INITIAL_PW
ENV \
FEATURES_OVERRIDING_ENVV="${ARG_FEATURES_OVERRIDING_ENVV:+1}" \
FEATURES_VERSION_STICKER=1 \
STARTUPDIR="/dockerstartup"
COPY ./src/xfce-startup "${STARTUPDIR}"/
COPY ./src/tests "${HOME}"/tests/
COPY ./xfce/src/home/config "${HOME}"/.config/
COPY ./xfce/src/home/Desktop "${HOME}"/Desktop/
COPY ./xfce/src/home/readme*.md "${HOME}"/
### Note that the line 'chmod 666 /etc/passwd /etc/group' sets the "softer" permissions only temporary.
### It allows the user generator startup script to configure the user and the group correctly.
### The script will set the permissions of both files back to the default '644'.
### The script will also clear the file '.initial_sudo_password' after using it.
### However, note that the initial sudo password will still be persisted in the image history.
### You have to change it inside the container, if you want to keep it really secret.
### Note that all this will not be done, if the startup script will not be executed.
RUN \
chmod 666 /etc/passwd /etc/group \
&& echo "${HEADLESS_USER_GROUP_NAME}:x:${HEADLESS_USER_GROUP_ID}:" >> /etc/group \
&& echo "${HEADLESS_USER_NAME}:x:${HEADLESS_USER_ID}:${HEADLESS_USER_GROUP_ID}:Default:${HOME}:/bin/bash" >> /etc/passwd \
&& echo "${HEADLESS_USER_NAME} ALL=(ALL:ALL) ALL" | sudo tee /etc/sudoers.d/"${HEADLESS_USER_NAME}" \
&& echo "${ARG_SUDO_INITIAL_PW:-headless}" > "${STARTUPDIR}"/.initial_sudo_password \
&& echo "${HEADLESS_USER_NAME}:$(cat "${STARTUPDIR}"/.initial_sudo_password)" | chpasswd \
&& ln -s "${HOME}"/readme.md "${HOME}"/Desktop/README \
&& envsubst <"${HOME}"/Desktop/versionsticker.desktop >/tmp/esub.tmp && mv -f /tmp/esub.tmp "${HOME}"/Desktop/versionsticker.desktop \
&& "${STARTUPDIR}"/set_user_permissions.sh "${STARTUPDIR}" "${HOME}"
USER "${HEADLESS_USER_ID}"
ENTRYPOINT [ "/usr/bin/tini", "--", "/dockerstartup/startup.sh" ]
# RUN chmod 644 /etc/passwd /etc/group
# ENTRYPOINT [ "/usr/bin/tini", "--", "tail", "-f", "/dev/null" ]
##################
### METADATA STAGE
##################
FROM stage_final as stage_metadata
ARG ARG_CREATED
ARG ARG_DOCKER_TAG
ARG ARG_VCS_REF
ARG ARG_VERSION_STICKER
LABEL \
org.opencontainers.image.authors="accetto" \
org.opencontainers.image.created="${ARG_CREATED}" \
org.opencontainers.image.description="Headless Debian/Xfce/VNC/noVNC containers with Internet browsers" \
org.opencontainers.image.documentation="https://github.com/accetto/debian-vnc-xfce-g3" \
org.opencontainers.image.source="https://github.com/accetto/debian-vnc-xfce-g3" \
org.opencontainers.image.title="accetto/debian-vnc-xfce-g3" \
org.opencontainers.image.url="https://github.com/accetto/debian-vnc-xfce-g3" \
org.opencontainers.image.vendor="https://github.com/accetto" \
org.opencontainers.image.version="${ARG_DOCKER_TAG}"
LABEL \
org.label-schema.vcs-url="https://github.com/accetto/debian-vnc-xfce-g3" \
org.label-schema.vcs-ref="${ARG_VCS_REF}"
LABEL \
any.accetto.version-sticker="${ARG_VERSION_STICKER}"

0
docker/README.md Normal file → Executable file
View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 471 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

6
docker/hooks/build Normal file → Executable file
View File

@@ -62,8 +62,8 @@ main() {
now="$(date --utc +%FT%TZ)"
echo "Current timestamp: ${now}" ; echo
### no quotes around ${params}!
set -x
### no quotes around 'params'
docker build ${params} \
-f "${DOCKERFILE_PATH}" \
--build-arg BASEIMAGE="${BASEIMAGE}" \
@@ -91,7 +91,11 @@ main() {
${FEATURES_FIREFOX_PLUS:+--build-arg ARG_MERGE_STAGE_BROWSER_BASE="stage_firefox_plus"} \
\
-t "${DOCKER_REPO}:${DOCKER_TAG}${target_stage:+_${target_stage}}" "${_build_context}"
exit_code=$?
set +x
if [[ ${exit_code} -ne 0 ]] ; then die "Failed to build image '${DOCKER_REPO}:${DOCKER_TAG}'" ${exit_code} ; fi
}
main $@

0
docker/hooks/cache Normal file → Executable file
View File

58
docker/hooks/env.rc Normal file → Executable file
View File

@@ -5,7 +5,7 @@ die() {
local -i code=${2:-1}
local place="${3:-$0}"
echo -e "EXITING '${place}' with code ${code}: ${message}" >&2
echo -e "EXITING at line "${BASH_LINENO[0]}" in '${place}' with code ${code}: ${message}" >&2
exit ${code}
}
@@ -49,7 +49,8 @@ DOCKER_REPO="${_owner}/${BUILDER_REPO:?Need builder repo name}"
declare _deploy_repo
### array of the image tags to be deployed
### arrays of the image tags to be deployed
declare -a _deploy_builder_tags
declare -a _deploy_tags
declare _deploytag
@@ -77,7 +78,7 @@ if [[ $# -ge 2 ]] ; then shift 2 ; fi
### Remark: There are also 'FEATURES_*' variables that are always set, e.g. 'FEATURES_VERSION_STICKER=1'.
### These features influence the content of almost all stages:
### Warning! Anything except '0' means '1', even unset or emty.
### Warning! Anything except '0' means '1', even unset or empty.
if [[ "${FEATURES_BUILD_SLIM}" == "0" ]] ; then FEATURES_BUILD_SLIM="" ; else FEATURES_BUILD_SLIM=1 ; fi
### These features influence the content of the related stages:
@@ -89,7 +90,7 @@ if [[ "${FEATURES_CHROMIUM}" == "1" ]] ; then FEATURES_CHROMIUM=1 ; else FEATURE
if [[ "${FEATURES_FIREFOX}" == "1" ]] ; then FEATURES_FIREFOX=1 ; else FEATURES_FIREFOX="" ; fi
### These features influence container behaviour at startup time
### Warning! Anything except '0' means '1', even unset or emty.
### Warning! Anything except '0' means '1', even unset or empty.
if [[ "${FEATURES_OVERRIDING_ENVV}" == "0" ]] ; then FEATURES_OVERRIDING_ENVV="" ; else FEATURES_OVERRIDING_ENVV=1 ; fi
### These features are always enabled and cannot be disabled via environment variables
@@ -124,10 +125,16 @@ case "${_branch}" in
### choose the Dockerfile
case "${_blend}" in
latest | latest-chromium | latest-firefox)
latest | latest-chromium | latest-firefox | bookworm | bookworm-chromium | bookworm-firefox)
BASETAG="12-slim"
DOCKERFILE_PATH="${_build_context}/Dockerfile.xfce.12"
;;
bullseye | bullseye-chromium | bullseye-firefox)
BASETAG="11-slim"
DOCKERFILE_PATH="${_build_context}/Dockerfile.xfce"
DOCKERFILE_PATH="${_build_context}/Dockerfile.xfce.11"
;;
* )
@@ -138,7 +145,10 @@ case "${_branch}" in
### set the building parameters
case "${_blend}" in
latest | latest-chromium | latest-firefox )
latest | latest-chromium | latest-firefox \
| bookworm | bookworm-chromium | bookworm-firefox \
| bullseye | bullseye-chromium | bullseye-firefox \
)
### this feature is enabled by default
### however, it can be disabled via environment variables (export FEATURES_NOVNC=0)
@@ -191,8 +201,36 @@ case "${_branch}" in
fi
### normalize deployment tags
DOCKER_TAG="${_blend}"
_deploy_tags=( "latest" )
case "${_blend}" in
latest | latest-* )
### latest -> 12
DOCKER_TAG="${_blend}"
_deploy_tags=( "latest" "12" )
_deploy_builder_tags=( "${_blend}" "${_blend/latest/12}" )
;;
bookworm | bookworm-* )
### bookworm -> 12
DOCKER_TAG="${_blend/bookworm/12}"
_deploy_tags=( "latest" "12" )
_deploy_builder_tags=( "${_blend/bookworm/latest}" "${_blend/bookworm/12}" )
;;
bullseye | bullseye-* )
### bullseye -> 11
DOCKER_TAG="${_blend/bullseye/11}"
_deploy_tags=( "11" )
_deploy_builder_tags=( "${_blend/bullseye/11}" )
;;
* )
die "Unsupported blend '${_blend}'"
;;
esac
### add optional suffixes to deployment tags
@@ -223,4 +261,4 @@ case "${_branch}" in
* )
die "Unsupported branch '${_branch}'"
;;
esac
esac

18
docker/hooks/post_push Normal file → Executable file
View File

@@ -23,6 +23,7 @@ main() {
local version_sticker_verbose
local repo_building="${DOCKER_REPO##*/}"
local repo_deploy="${_deploy_repo##*/}"
local keeper_repo_tag="${_deploy_builder_tags[0]}"
### debugging support
# dump_environment
@@ -33,18 +34,21 @@ main() {
if [[ -n "${GIST_TOKEN}" && -n "${GIST_ID}" && -n "${DEPLOY_GIST_ID}" ]] ; then
if [[ ( -n "${repo_deploy}" && "${repo_deploy}" != "${_prohibited_repo_name}" ) \
|| ( "${FORCE_PUBLISHING_BUILDER_REPO}" == "1" && -n "${repo_building}" && "${repo_building}" != "${_prohibited_repo_name}" ) ]] ; \
|| ( "${FORCE_PUBLISHING_BUILDER_REPO:-0}" == "1" && -n "${repo_building}" && "${repo_building}" != "${_prohibited_repo_name}" ) ]] ; \
then
### get values for badges from the image metadata (labels)
created=$( get_label "${DOCKER_REPO}:${DOCKER_TAG}" "org.opencontainers.image.created" )
version_sticker=$( get_label "${DOCKER_REPO}:${DOCKER_TAG}" "any.accetto.version-sticker" )
created=$( get_label "${DOCKER_REPO}:${keeper_repo_tag}" "org.opencontainers.image.created" )
version_sticker=$( get_label "${DOCKER_REPO}:${keeper_repo_tag}" "any.accetto.version-sticker" )
version_sticker_verbose=$( cat "${_build_context}/${_scrap_version_sticker_verbose_current}" )
### update badge endpoints in the builder repository gist
update_gist "${GIST_ID}" "${_gist_key_created}" "${DOCKER_REPO}" "${DOCKER_TAG}" "${created}"
update_gist "${GIST_ID}" "${_gist_key_version_sticker}" "${DOCKER_REPO}" "${DOCKER_TAG}" "${version_sticker}"
update_gist "${GIST_ID}" "${_gist_key_version_sticker_verbose}" "${DOCKER_REPO}" "${DOCKER_TAG}" "${version_sticker_verbose}"
for t in "${_deploy_builder_tags[@]}" ; do
update_gist "${GIST_ID}" "${_gist_key_created}" "${DOCKER_REPO}" "${t}" "${created}"
update_gist "${GIST_ID}" "${_gist_key_version_sticker}" "${DOCKER_REPO}" "${t}" "${version_sticker}"
update_gist "${GIST_ID}" "${_gist_key_version_sticker_verbose}" "${DOCKER_REPO}" "${t}" "${version_sticker_verbose}"
done
else
echo "Skipping builder gist update because of null or prohibited target repositories."
@@ -57,7 +61,7 @@ main() {
### note that the builder and deployment repositories could be identical
### in that case skip the tag which has been already published above
if [[ "${DOCKER_REPO}" != "${_deploy_repo}" || "${DOCKER_TAG}" != "${t}" ]] ; then
if [[ "${DOCKER_REPO}" != "${_deploy_repo}" || "${keeper_repo_tag}" != "${t}" ]] ; then
update_gist "${DEPLOY_GIST_ID}" "${_gist_key_created}" "${_deploy_repo}" "${t}" "${created}"
update_gist "${DEPLOY_GIST_ID}" "${_gist_key_version_sticker}" "${_deploy_repo}" "${t}" "${version_sticker}"

9
docker/hooks/pre_build Normal file → Executable file
View File

@@ -13,7 +13,7 @@ main() {
local version_sticker
local -i exit_code=0
local should_build=${FORCE_BUILDING}
local should_build=${FORCE_BUILDING:-0}
local build_prohibited=${PROHIBIT_BUILDING}
local cache_script="cache"
@@ -57,8 +57,9 @@ main() {
fi
### build a temporary helper image for getting the current version sticker values
### no quotes around ${params}!
set -x
### no quotes around 'params'
docker build ${params} \
-f "${DOCKERFILE_PATH}" \
--build-arg BASEIMAGE="${BASEIMAGE}" \
@@ -82,8 +83,12 @@ main() {
${FEATURES_FIREFOX_PLUS:+--build-arg ARG_MERGE_STAGE_BROWSER_BASE="stage_firefox_plus"} \
\
-t "${DOCKER_REPO}":"${DOCKER_TAG}${helper_suffix}" "${_build_context}"
exit_code=$?
set +x
if [[ ${exit_code} -ne 0 ]] ; then set +x; die "Failed to build image '${DOCKER_REPO}:${DOCKER_TAG}${helper_suffix}'" ${exit_code} ; fi
### get the actual verbose version sticker value from the helper image and store it as the current one
### note that some apps require display to report their versions correctly (e.g. Ristretto or Screenshooter)
# version_sticker="$( docker run --rm ${DOCKER_REPO}:${DOCKER_TAG}${helper_suffix} --skip-vnc --version-sticker-verbose )"

52
docker/hooks/push Normal file → Executable file
View File

@@ -11,6 +11,8 @@ source "${_mydir}"/util.rc
deployment_push() {
local target
local repo="${_deploy_repo##*/}"
local keeper_repo_tag="${_deploy_builder_tags[0]}"
local -i exit_code=0
if [[ -n "${repo}" && "${repo}" != "${_prohibited_repo_name}" ]] ; then
@@ -19,24 +21,33 @@ deployment_push() {
### note that the builder and deployment repositories could be identical
### in that case skip the tag which has been already published above
if [[ "${DOCKER_REPO}" != "${_deploy_repo}" || "${DOCKER_TAG}" != "${t}" ]] ; then
if [[ "${DOCKER_REPO}" != "${_deploy_repo}" || "${keeper_repo_tag}" != "${t}" ]] ; then
target="${_deploy_repo}:${t}"
echo ; echo "Deploying image '${target}'"
docker tag "${DOCKER_REPO}:${DOCKER_TAG}" "${target}"
docker tag "${DOCKER_REPO}:${keeper_repo_tag}" "${target}"
docker push "${target}"
exit_code=$?
docker rmi "${target}"
if [[ ${exit_code} -ne 0 ]] ; then
docker logout
die "Unable to push image '${target}'" ${exit_code}
fi
fi
done
else
echo "Skipping push because of null or prohibited deployment repository '${repo}'."
echo "Skipping deployment repo push because of null or prohibited deployment repository '${repo}'."
fi
}
main() {
local target
local repo="${DOCKER_REPO##*/}"
local keeper_repo_tag="${_deploy_builder_tags[0]}"
local -i exit_code=0
if [[ -f "${_build_context}/${_scrap_demand_stop_building}" ]] ; then
echo "Skipping push on demand."
@@ -62,15 +73,42 @@ main() {
fi
### push images into the builder repository
if [[ "${FORCE_PUBLISHING_BUILDER_REPO}" == "1" ]] ; then
if [[ "${FORCE_PUBLISHING_BUILDER_REPO:-0}" == "1" ]] ; then
if [[ -n "${repo}" && "${repo}" != "${_prohibited_repo_name}" ]] ; then
echo ; echo "Pushing builder image ${DOCKER_REPO}:${DOCKER_TAG}"
docker push ${DOCKER_REPO}:${DOCKER_TAG}
### push all target tags into the builder repository
for t in "${_deploy_builder_tags[@]}" ; do
echo ; echo "Pushing builder image ${DOCKER_REPO}:${t}"
if [[ "${t}" == "${keeper_repo_tag}" ]] ; then
# first element is the master repo (a keeper)
docker push "${DOCKER_REPO}:${t}"
exit_code=$?
if [[ ${exit_code} -ne 0 ]] ; then
docker logout
die "Unable to push image '${DOCKER_REPO}:${t}'" ${exit_code}
fi
else
target="${DOCKER_REPO}:${t}"
docker tag "${DOCKER_REPO}:${keeper_repo_tag}" "${target}"
docker push "${target}"
exit_code=$?
docker rmi "${target}"
if [[ ${exit_code} -ne 0 ]] ; then
docker logout
die "Unable to push image '${target}'" ${exit_code}
fi
fi
done
else
echo "Skipping forced push because of null or prohibited builder repository '${repo}'."
echo "Skipping forced builder repo push because of null or prohibited builder repository '${repo}'."
fi
fi

0
docker/hooks/release_of Normal file → Executable file
View File

116
docker/hooks/secrets.rc Executable file
View File

@@ -0,0 +1,116 @@
### This files configures the environment (including secrets!) for building images locally.
### Source this file before building.
### Rename it to "secrets.rc" (or similar) and **make sure** that the '.gitignore' and '.dockerignore' files
### contain the 'secret*' exclusion pattern!
### Example: source ./secrets.rc
### This file is automatically sourced by the script 'hooks/env.rc' if it's found in the same directory.
#region General building pipeline control
export DOCKER_BUILDKIT=1
# export COMPOSE_DOCKER_CLI_BUILD=0
### will force re-building regardless of the verbose version sticker changes
export FORCE_BUILDING=1
### will prohibit re-building regardless of verbose version sticker changes
# export PROHIBIT_BUILDING=0
#endregion
#region Optional version sticker prefix and/or suffix
# export VERSION_STICKER_PREFIX="LOCAL-BETA-"
# export VERSION_STICKER_SUFFIX="-BETA"
#endregion
#region Development environment
### -----------------------
### development environment
### -----------------------
# ### owner of Gitea repos
# export REPO_OWNER_NAME=""
# ### development builder gist
# export GIST_ID=""
# ### development deployment gist
# export DEPLOY_GIST_ID=""
# ### note that the reserved repository name 'void' will prohibit the publishing
# ### primary deployment repos may not exist (may be also left unset)
# export DEPLOYMENT_REPO=""
# export DEPLOYMENT_REPO_CHROMIUM=""
# export DEPLOYMENT_REPO_FIREFOX=""
# ### builder repo can be a secondary deployment repo (if FORCE_PUBLISHING_BUILDER_REPO=1)
# export BUILDER_REPO=""
# ### shared g3-cache is outside the Docker building context
# export SHARED_G3_CACHE_PATH=""
# ### used to control building/publishing (unset means '0')
# export FORCE_PUBLISHING_BUILDER_REPO=1
# export FORCE_BUILDING=1
# ### used by the 'post_push' hook script, which normally removes the helper files
# # export KEEP_HELPER_FILES=0
# ### explicitly disable features that are enabled by default
# # export FEATURES_NOVNC=0
# # export FEATURES_FIREFOX_PLUS=0
# # export FEATURES_OVERRIDING_ENVV=0
#endregion
#region Production environment
### ----------------------
### production environment
### ----------------------
# ### owner of Docker Hub repos
export REPO_OWNER_NAME="repo.aknlw.com"
# ### production builder gist
# export GIST_ID=""
# ### produktion deployment gist
# export DEPLOY_GIST_ID=""
# ### note that the reserved repository name 'void' will prohibit the publishing
# ### primary deployment repos
export DEPLOYMENT_REPO="repo.aknlw.com"
export DEPLOYMENT_REPO_CHROMIUM="akanealw/debian-vnc-xfce-chromium"
export DEPLOYMENT_REPO_FIREFOX="akanealw/debian-vnc-xfce-firefox"
# ### builder repo can be a secondary deployment repo (if FORCE_PUBLISHING_BUILDER_REPO=1)
export BUILDER_REPO="akanealw/debian-vnc-xfce"
# ### shared g3-cache is outside the Docker building context
# export SHARED_G3_CACHE_PATH=""
# ### used to control building/publishing (unset means '0')
# export FORCE_PUBLISHING_BUILDER_REPO=1
# export FORCE_BUILDING=1
# ### used by the 'post_push' hook script, which normally removes the helper files
# export KEEP_HELPER_FILES=0
# ### explicitly disable features that are enabled by default
# # export FEATURES_NOVNC=0
export FEATURES_FIREFOX_PLUS=0
# # export FEATURES_OVERRIDING_ENVV=0
#endregion
#region Real secrets
### ------------
### REAL SECRETS
### ------------
### !!! REAL SECRET !!!
### Gitea: Settings/Developer settings/Personal access tokens
### this PAT must have the 'gist' scope
### warning! this gist token is valid for all gits of the same owner!
# export GIST_TOKEN=""
### !!! REAL SECRETS !!!
### Docker Hub credentials
### warning! this credentials are valid for all Docker Hub repositories of the same owner!
# export DOCKERHUB_USERNAME=""
# export DOCKERHUB_PASSWORD=""
#endregion

0
docker/hooks/util.rc Normal file → Executable file
View File

18
docker/src/home/.bashrc Executable file
View File

@@ -0,0 +1,18 @@
### some examples of custom aliases
alias ll="ls -l"
### clear terminal window
alias cls='printf "\033c"'
### change terminal prompt text
fn_ps1() {
if [ $# -gt 0 ] ; then
### given value in bold green
PS1="\[\033[01;32m\]$1\[\033[00m\]> "
else
### basename of the current working directory in bold blue
PS1='\[\033[01;34m\]\W\[\033[00m\]> '
fi
}
alias ps1='fn_ps1'

0
docker/src/tests/test-01.sh Normal file → Executable file
View File

0
docker/src/xfce-startup/help.rc Normal file → Executable file
View File

0
docker/src/xfce-startup/parser.rc Normal file → Executable file
View File

0
docker/src/xfce-startup/set_user_permissions.sh Normal file → Executable file
View File

0
docker/src/xfce-startup/startup.sh Normal file → Executable file
View File

0
docker/src/xfce-startup/user_generator.rc Normal file → Executable file
View File

2
docker/src/xfce-startup/version_of.sh Normal file → Executable file
View File

@@ -8,7 +8,7 @@ case "$1" in
echo $(ng --version 2>/dev/null | grep -Po -m1 '(?<=Angular CLI:\s)[0-9.]+')
;;
chromium | chromium-browser)
### source example: Chromium 109.0.5414.119 built on Debian 11.6, running on Debian 11.6
### source example: Chromium 115.0.5790.170 built on Debian 12.1, running on Debian 12.1
echo $(chromium --version 2>/dev/null | grep -Po -m1 '(?<=Chromium\s)[0-9.]+')
;;
code | vsc | vscode | visual-studio-code | visualstudiocode )

0
docker/src/xfce-startup/version_sticker.sh Normal file → Executable file
View File

0
docker/src/xfce-startup/vnc_startup.rc Normal file → Executable file
View File

43
docker/xfce-chromium/README-dockerhub.md Normal file → Executable file
View File

@@ -12,27 +12,35 @@
This Docker Hub repository contains Docker images for headless working.
The images are based on [Debian 11][docker-debian] and include [Xfce][xfce] desktop, [TigerVNC][tigervnc] server and [noVNC][novnc] client.
The images are based on the current [Debian 12][docker-debian] and the previous [Debian 11][docker-debian] and include [Xfce][xfce] desktop, [TigerVNC][tigervnc] server and [noVNC][novnc] client.
The popular web browser [Chromium][chromium] is also included.
There is also a similar sibling image [accetto/ubuntu-vnc-xfce-chromium-g3][accetto-dockerhub-ubuntu-vnc-xfce-chromium-g3] based on [Ubuntu 22.04 LTS and 20.04 LTS][docker-ubuntu].
This [User guide][this-user-guide] describes the images and how to use them.
The related [GitHub project][this-github] contains image generators that image users generally dont need, unless they want to build the images themselves.
### Tags
The following image tags are regularly built and published on Docker Hub:
<!-- markdownlint-disable MD052 -->
- `latest` based on `Debian 11`
- `latest` (also as `12`) based on `Debian 12`
![badge_latest_created][badge_latest_created]
[![badge_latest_version-sticker][badge_latest_version-sticker]][link_latest_version-sticker-verbose]
- `11` based on `Debian 11`
![badge_11_created][badge_11_created]
[![badge_11_version-sticker][badge_11_version-sticker]][link_11_version-sticker-verbose]
<!-- markdownlint-enable MD052 -->
**Hint:** Clicking the version sticker badge reveals more information about the particular build.
### Features
The main features and components of the images in the default configuration are:
- lightweight [Xfce][xfce] desktop environment (Debian distribution)
@@ -47,10 +55,6 @@ The main features and components of the images in the default configuration are:
- support of **version sticker** (see [User guide][this-user-guide-version-sticker])
- current version of [Chromium Browser][chromium] open-source web browser (Debian distribution)
The [Chromium Browser][chromium] in these images runs in the `--no-sandbox` mode.
You should be aware of the implications.
The images are intended for testing and development.
The following **TCP** ports are exposed by default:
- **5901** for access over **VNC** (using VNC viewer)
@@ -58,10 +62,20 @@ The following **TCP** ports are exposed by default:
![container-screenshot][this-screenshot-container]
### Remarks
There is also a similar sibling image [accetto/ubuntu-vnc-xfce-chromium-g3][accetto-dockerhub-ubuntu-vnc-xfce-chromium-g3] based on [Ubuntu 22.04 LTS and 20.04 LTS][docker-ubuntu].
This is the **third generation** (G3) of my headless images.
The **second generation** (G2) contains the GitHub repository [accetto/xubuntu-vnc-novnc][accetto-github-xubuntu-vnc-novnc].
The **first generation** (G1) contains the GitHub repository [accetto/ubuntu-vnc-xfce][accetto-github-ubuntu-vnc-xfce].
The [Chromium Browser][chromium] in these images runs in the `--no-sandbox` mode.
You should be aware of the implications.
The images are intended for testing and development.
### Getting help
If you've found a problem or you just have a question, please check the [User guide][this-user-guide], [Issues][this-issues] and [sibling Wiki][sibling-wiki] first.
Please do not overlook the closed issues.
@@ -70,8 +84,6 @@ The better you describe the problem, the bigger the chance it'll be solved soon.
If you have a question or an idea and you don't want to open an issue, you can also use the [sibling Discussions][sibling-discussions].
**Remark:** The [GitHub project][this-github] contains image generators that image users generally dont need, unless they want to build the images themselves.
***
[this-user-guide]: https://accetto.github.io/user-guide-g3/
@@ -84,13 +96,13 @@ If you have a question or an idea and you don't want to open an issue, you can a
[this-github]: https://github.com/accetto/debian-vnc-xfce-g3/
[this-issues]: https://github.com/accetto/debian-vnc-xfce-g3/issues
[this-readme-full]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/docker/xfce-chromium/README.md
[this-issues]: https://github.com/accetto/debian-vnc-xfce-g3/issues
[this-dockerfile]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/docker/Dockerfile.xfce
[this-screenshot-container]: https://raw.githubusercontent.com/accetto/debian-vnc-xfce-g3/master/docker/doc/images/debian-vnc-xfce-chromium-g3-latest.png
[this-screenshot-container]: https://raw.githubusercontent.com/accetto/debian-vnc-xfce-g3/master/docker/doc/images/animation-debian-vnc-xfce-chromium-g3.gif
[accetto-dockerhub-ubuntu-vnc-xfce-chromium-g3]: https://hub.docker.com/r/accetto/ubuntu-vnc-xfce-chromium-g3
@@ -105,6 +117,7 @@ If you have a question or an idea and you don't want to open an issue, you can a
[docker-debian]: https://hub.docker.com/_/debian/
[docker-ubuntu]: https://hub.docker.com/_/ubuntu/
[chromium]: https://www.chromium.org/Home
[jq]: https://stedolan.github.io/jq/
[mousepad]: https://github.com/codebrainz/mousepad
[nano]: https://www.nano-editor.org/
@@ -114,8 +127,6 @@ If you have a question or an idea and you don't want to open an issue, you can a
[tini]: https://github.com/krallin/tini
[xfce]: http://www.xfce.org
[chromium]: https://www.chromium.org/Home
[badge-github-release]: https://badgen.net/github/release/accetto/debian-vnc-xfce-g3?icon=github&label=release
[badge-docker-pulls]: https://badgen.net/docker/pulls/accetto/debian-vnc-xfce-chromium-g3?icon=docker&label=pulls

22
docker/xfce-chromium/README.md Normal file → Executable file
View File

@@ -8,18 +8,8 @@
This GitHub project folder contains resources used by building Debian images available on Docker Hub in the repository [accetto/debian-vnc-xfce-chromium-g3][this-docker].
The [Chromium Browser][chromium] in these images runs in the `--no-sandbox` mode.
You should be aware of the implications.
The images are intended for testing and development.
There is also a sibling project [accetto/ubuntu-vnc-xfce-g3][accetto-github-ubuntu-vnc-xfce-g3] containing similar images based on [Ubuntu 22.04 LTS and 20.04 LTS][docker-ubuntu].
This [User guide][this-user-guide] describes the images and how to use them.
This is the **third generation** (G3) of my headless images.
The **second generation** (G2) contains the GitHub repository [accetto/xubuntu-vnc-novnc][accetto-github-xubuntu-vnc-novnc].
The **first generation** (G1) contains the GitHub repository [accetto/ubuntu-vnc-xfce][accetto-github-ubuntu-vnc-xfce].
### Building images
```shell
@@ -38,6 +28,18 @@ The **first generation** (G1) contains the GitHub repository [accetto/ubuntu-vnc
Refer to the main [README][this-readme] file for more information about the building subject.
### Remarks
There is also a sibling project [accetto/ubuntu-vnc-xfce-g3][accetto-github-ubuntu-vnc-xfce-g3] containing similar images based on [Ubuntu 22.04 LTS and 20.04 LTS][docker-ubuntu].
This is the **third generation** (G3) of my headless images.
The **second generation** (G2) contains the GitHub repository [accetto/xubuntu-vnc-novnc][accetto-github-xubuntu-vnc-novnc].
The **first generation** (G1) contains the GitHub repository [accetto/ubuntu-vnc-xfce][accetto-github-ubuntu-vnc-xfce].
The [Chromium Browser][chromium] in these images runs in the `--no-sandbox` mode.
You should be aware of the implications.
The images are intended for testing and development.
### Getting help
If you've found a problem or you just have a question, please check the [User guide][this-user-guide], [Issues][this-issues] and [sibling Wiki][sibling-wiki] first.

8
docker/xfce-chromium/readme-append.template Normal file → Executable file
View File

@@ -8,3 +8,11 @@
[badge_latest_version-sticker]: https://badgen.net/https/gist.githubusercontent.com/${OWNER}/${GIST}/raw/${REPO}@latest@version-sticker.json
[link_latest_version-sticker-verbose]: https://gist.githubusercontent.com/${OWNER}/${GIST}/raw/${REPO}@latest@version-sticker-verbose.txt
<!-- 11 -->
[badge_11_created]: https://badgen.net/https/gist.githubusercontent.com/${OWNER}/${GIST}/raw/${REPO}@11@created.json
[badge_11_version-sticker]: https://badgen.net/https/gist.githubusercontent.com/${OWNER}/${GIST}/raw/${REPO}@11@version-sticker.json
[link_11_version-sticker-verbose]: https://gist.githubusercontent.com/${OWNER}/${GIST}/raw/${REPO}@11@version-sticker-verbose.txt

0
docker/xfce-chromium/src/home/Desktop/chromium.desktop Normal file → Executable file
View File

0
docker/xfce-chromium/src/home/readme-chromium.md Normal file → Executable file
View File

35
docker/xfce-firefox/README-dockerhub.md Normal file → Executable file
View File

@@ -12,27 +12,35 @@
This Docker Hub repository contains Docker images for headless working.
The images are based on [Debian 11][docker-debian] and include [Xfce][xfce] desktop, [TigerVNC][tigervnc] server and [noVNC][novnc] client.
The images are based on the current [Debian 12][docker-debian] and the previous [Debian 11][docker-debian] and include [Xfce][xfce] desktop, [TigerVNC][tigervnc] server and [noVNC][novnc] client.
The popular web browser [Firefox][firefox] is also included.
There is also a similar sibling image [accetto/ubuntu-vnc-xfce-firefox-g3][accetto-dockerhub-ubuntu-vnc-xfce-firefox-g3] based on [Ubuntu 22.04 LTS and 20.04 LTS][docker-ubuntu].
This [User guide][this-user-guide] describes the images and how to use them.
The related [GitHub project][this-github] contains image generators that image users generally dont need, unless they want to build the images themselves.
### Tags
The following image tags are regularly built and published on Docker Hub:
<!-- markdownlint-disable MD052 -->
- `latest` based on `Debian 11`
- `latest` (also as `12`) based on `Debian 12`
![badge_latest_created][badge_latest_created]
[![badge_latest_version-sticker][badge_latest_version-sticker]][link_latest_version-sticker-verbose]
- `11` based on `Debian 11`
![badge_11_created][badge_11_created]
[![badge_11_version-sticker][badge_11_version-sticker]][link_11_version-sticker-verbose]
<!-- markdownlint-enable MD052 -->
**Hint:** Clicking the version sticker badge reveals more information about the particular build.
### Features
The main features and components of the images in the default configuration are:
- lightweight [Xfce][xfce] desktop environment (Debian distribution)
@@ -54,10 +62,16 @@ The following **TCP** ports are exposed by default:
![container-screenshot][this-screenshot-container]
### Remarks
There is also a similar sibling image [accetto/ubuntu-vnc-xfce-firefox-g3][accetto-dockerhub-ubuntu-vnc-xfce-firefox-g3] based on [Ubuntu 22.04 LTS and 20.04 LTS][docker-ubuntu].
This is the **third generation** (G3) of my headless images.
The **second generation** (G2) contains the GitHub repository [accetto/xubuntu-vnc-novnc][accetto-github-xubuntu-vnc-novnc].
The **first generation** (G1) contains the GitHub repository [accetto/ubuntu-vnc-xfce][accetto-github-ubuntu-vnc-xfce].
### Getting help
If you've found a problem or you just have a question, please check the [User guide][this-user-guide], [Issues][this-issues] and [sibling Wiki][sibling-wiki] first.
Please do not overlook the closed issues.
@@ -66,8 +80,6 @@ The better you describe the problem, the bigger the chance it'll be solved soon.
If you have a question or an idea and you don't want to open an issue, you can also use the [sibling Discussions][sibling-discussions].
**Remark:** The [GitHub project][this-github] contains image generators that image users generally dont need, unless they want to build the images themselves.
***
[this-user-guide]: https://accetto.github.io/user-guide-g3/
@@ -82,13 +94,13 @@ If you have a question or an idea and you don't want to open an issue, you can a
[this-github]: https://github.com/accetto/debian-vnc-xfce-g3/
[this-issues]: https://github.com/accetto/debian-vnc-xfce-g3/issues
[this-readme-full]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/docker/xfce-firefox/README.md
[this-issues]: https://github.com/accetto/debian-vnc-xfce-g3/issues
[this-dockerfile]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/docker/Dockerfile.xfce
[this-screenshot-container]: https://raw.githubusercontent.com/accetto/debian-vnc-xfce-g3/master/docker/doc/images/debian-vnc-xfce-firefox-g3-latest.png
[this-screenshot-container]: https://raw.githubusercontent.com/accetto/debian-vnc-xfce-g3/master/docker/doc/images/animation-debian-vnc-xfce-firefox-g3.gif
[accetto-dockerhub-ubuntu-vnc-xfce-firefox-g3]: https://hub.docker.com/r/accetto/ubuntu-vnc-xfce-firefox-g3
@@ -103,6 +115,7 @@ If you have a question or an idea and you don't want to open an issue, you can a
[docker-debian]: https://hub.docker.com/_/debian/
[docker-ubuntu]: https://hub.docker.com/_/ubuntu/
[firefox]: https://www.mozilla.org
[jq]: https://stedolan.github.io/jq/
[mousepad]: https://github.com/codebrainz/mousepad
[nano]: https://www.nano-editor.org/
@@ -112,8 +125,6 @@ If you have a question or an idea and you don't want to open an issue, you can a
[tini]: https://github.com/krallin/tini
[xfce]: http://www.xfce.org
[firefox]: https://www.mozilla.org
[badge-github-release]: https://badgen.net/github/release/accetto/debian-vnc-xfce-g3?icon=github&label=release
[badge-docker-pulls]: https://badgen.net/docker/pulls/accetto/debian-vnc-xfce-firefox-g3?icon=docker&label=pulls

14
docker/xfce-firefox/README.md Normal file → Executable file
View File

@@ -8,14 +8,8 @@
This GitHub project folder contains resources used by building Debian images available on Docker Hub in the repository [accetto/debian-vnc-xfce-firefox-g3][this-docker].
There is also a sibling project [accetto/ubuntu-vnc-xfce-g3][accetto-github-ubuntu-vnc-xfce-g3] containing similar images based on [Ubuntu 22.04 LTS and 20.04 LTS][docker-ubuntu].
This [User guide][this-user-guide] describes the images and how to use them.
This is the **third generation** (G3) of my headless images.
The **second generation** (G2) contains the GitHub repository [accetto/xubuntu-vnc-novnc][accetto-github-xubuntu-vnc-novnc].
The **first generation** (G1) contains the GitHub repository [accetto/ubuntu-vnc-xfce][accetto-github-ubuntu-vnc-xfce].
### Building images
```shell
@@ -34,6 +28,14 @@ The **first generation** (G1) contains the GitHub repository [accetto/ubuntu-vnc
Refer to the main [README][this-readme] file for more information about the building subject.
### Remarks
There is also a sibling project [accetto/ubuntu-vnc-xfce-g3][accetto-github-ubuntu-vnc-xfce-g3] containing similar images based on [Ubuntu 22.04 LTS and 20.04 LTS][docker-ubuntu].
This is the **third generation** (G3) of my headless images.
The **second generation** (G2) contains the GitHub repository [accetto/xubuntu-vnc-novnc][accetto-github-xubuntu-vnc-novnc].
The **first generation** (G1) contains the GitHub repository [accetto/ubuntu-vnc-xfce][accetto-github-ubuntu-vnc-xfce].
### Getting help
If you've found a problem or you just have a question, please check the [User guide][this-user-guide], [Issues][this-issues] and [sibling Wiki][sibling-wiki] first.

8
docker/xfce-firefox/readme-append.template Normal file → Executable file
View File

@@ -8,3 +8,11 @@
[badge_latest_version-sticker]: https://badgen.net/https/gist.githubusercontent.com/${OWNER}/${GIST}/raw/${REPO}@latest@version-sticker.json
[link_latest_version-sticker-verbose]: https://gist.githubusercontent.com/${OWNER}/${GIST}/raw/${REPO}@latest@version-sticker-verbose.txt
<!-- 11 -->
[badge_11_created]: https://badgen.net/https/gist.githubusercontent.com/${OWNER}/${GIST}/raw/${REPO}@11@created.json
[badge_11_version-sticker]: https://badgen.net/https/gist.githubusercontent.com/${OWNER}/${GIST}/raw/${REPO}@11@version-sticker.json
[link_11_version-sticker-verbose]: https://gist.githubusercontent.com/${OWNER}/${GIST}/raw/${REPO}@11@version-sticker-verbose.txt

View File

View File

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

0
docker/xfce-firefox/src/firefox.plus/resources/user.js Normal file → Executable file
View File

View File

27
docker/xfce/README-dockerhub.md Normal file → Executable file
View File

@@ -12,25 +12,34 @@
This Docker Hub repository contains Docker images for headless working.
The images are based on [Debian 11][docker-debian] and include [Xfce][xfce] desktop, [TigerVNC][tigervnc] server and [noVNC][novnc] client.
There is also a similar sibling repository [accetto/ubuntu-vnc-xfce-g3][accetto-dockerhub-ubuntu-vnc-xfce-g3], containing images based on [Ubuntu 22.04 LTS and 20.04 LTS][docker-ubuntu].
The images are based on the current [Debian 12][docker-debian] and the previous [Debian 11][docker-debian] and include [Xfce][xfce] desktop, [TigerVNC][tigervnc] server and [noVNC][novnc] client.
This [User guide][this-user-guide] describes the images and how to use them.
The related [GitHub project][this-github] contains image generators that image users generally dont need, unless they want to build the images themselves.
### Tags
The following image tags are regularly built and published on Docker Hub:
<!-- markdownlint-disable MD052 -->
- `latest` based on `Debian 11`
- `latest` (also as `12`) based on `Debian 12`
![badge_latest_created][badge_latest_created]
[![badge_latest_version-sticker][badge_latest_version-sticker]][link_latest_version-sticker-verbose]
- `11` based on `Debian 11`
![badge_11_created][badge_11_created]
[![badge_11_version-sticker][badge_11_version-sticker]][link_11_version-sticker-verbose]
<!-- markdownlint-enable MD052 -->
**Hint:** Clicking the version sticker badge reveals more information about the particular build.
### Features
The main features and components of the images in the default configuration are:
- lightweight [Xfce][xfce] desktop environment (Debian distribution)
@@ -51,10 +60,16 @@ The following **TCP** ports are exposed by default:
![container-screenshot][this-screenshot-container]
### Remarks
There is also a similar sibling repository [accetto/ubuntu-vnc-xfce-g3][accetto-dockerhub-ubuntu-vnc-xfce-g3], containing images based on [Ubuntu 22.04 LTS and 20.04 LTS][docker-ubuntu].
This is the **third generation** (G3) of my headless images.
The **second generation** (G2) contains the GitHub repository [accetto/xubuntu-vnc-novnc][accetto-github-xubuntu-vnc-novnc].
The **first generation** (G1) contains the GitHub repository [accetto/ubuntu-vnc-xfce][accetto-github-ubuntu-vnc-xfce].
### Getting help
If you've found a problem or you just have a question, please check the [User guide][this-user-guide], [Issues][this-issues] and [sibling Wiki][sibling-wiki] first.
Please do not overlook the closed issues.
@@ -63,8 +78,6 @@ The better you describe the problem, the bigger the chance it'll be solved soon.
If you have a question or an idea and you don't want to open an issue, you can also use the [sibling Discussions][sibling-discussions].
**Remark:** The [GitHub project][this-github] contains image generators that image users generally dont need, unless they want to build the images themselves.
***
[this-user-guide]: https://accetto.github.io/user-guide-g3/
@@ -83,7 +96,7 @@ If you have a question or an idea and you don't want to open an issue, you can a
[this-dockerfile]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/docker/Dockerfile.xfce
[this-screenshot-container]: https://raw.githubusercontent.com/accetto/debian-vnc-xfce-g3/master/docker/doc/images/debian-vnc-xfce-g3-latest.png
[this-screenshot-container]: https://raw.githubusercontent.com/accetto/debian-vnc-xfce-g3/master/docker/doc/images/animation-debian-vnc-xfce-g3.gif
[accetto-dockerhub-ubuntu-vnc-xfce-g3]: https://hub.docker.com/r/accetto/ubuntu-vnc-xfce-g3

14
docker/xfce/README.md Normal file → Executable file
View File

@@ -8,14 +8,8 @@
This GitHub project folder contains resources used by building Debian images available on Docker Hub in the repository [accetto/debian-vnc-xfce-g3][this-docker].
There is also a sibling project [accetto/ubuntu-vnc-xfce-g3][accetto-github-ubuntu-vnc-xfce-g3] containing similar images based on [Ubuntu 22.04 LTS and 20.04 LTS][docker-ubuntu].
This [User guide][this-user-guide] describes the images and how to use them.
This is the **third generation** (G3) of my headless images.
The **second generation** (G2) contains the GitHub repository [accetto/xubuntu-vnc-novnc][accetto-github-xubuntu-vnc-novnc].
The **first generation** (G1) contains the GitHub repository [accetto/ubuntu-vnc-xfce][accetto-github-ubuntu-vnc-xfce].
### Building images
```shell
@@ -34,6 +28,14 @@ The **first generation** (G1) contains the GitHub repository [accetto/ubuntu-vnc
Refer to the main [README][this-readme] file for more information about the building subject.
### Remarks
There is also a sibling project [accetto/ubuntu-vnc-xfce-g3][accetto-github-ubuntu-vnc-xfce-g3] containing similar images based on [Ubuntu 22.04 LTS and 20.04 LTS][docker-ubuntu].
This is the **third generation** (G3) of my headless images.
The **second generation** (G2) contains the GitHub repository [accetto/xubuntu-vnc-novnc][accetto-github-xubuntu-vnc-novnc].
The **first generation** (G1) contains the GitHub repository [accetto/ubuntu-vnc-xfce][accetto-github-ubuntu-vnc-xfce].
### Getting help
If you've found a problem or you just have a question, please check the [User guide][this-user-guide], [Issues][this-issues] and [sibling Wiki][sibling-wiki] first.

12
docker/xfce/readme-append.template Normal file → Executable file
View File

@@ -8,3 +8,15 @@
[badge_latest_version-sticker]: https://badgen.net/https/gist.githubusercontent.com/${OWNER}/${GIST}/raw/${REPO}@latest@version-sticker.json
[link_latest_version-sticker-verbose]: https://gist.githubusercontent.com/${OWNER}/${GIST}/raw/${REPO}@latest@version-sticker-verbose.txt
<!-- 11 -->
[badge_11_created]: https://badgen.net/https/gist.githubusercontent.com/${OWNER}/${GIST}/raw/${REPO}@11@created.json
[badge_11_version-sticker]: https://badgen.net/https/gist.githubusercontent.com/${OWNER}/${GIST}/raw/${REPO}@11@version-sticker.json
[link_11_version-sticker-verbose]: https://gist.githubusercontent.com/${OWNER}/${GIST}/raw/${REPO}@11@version-sticker-verbose.txt

0
docker/xfce/src/home/Desktop/versionsticker.desktop Normal file → Executable file
View File

0
docker/xfce/src/home/config/xfce4/terminal/terminalrc Normal file → Executable file
View File

View File

0
docker/xfce/src/home/readme.md Normal file → Executable file
View File

0
examples/Dockerfile.extend Normal file → Executable file
View File

0
examples/example-override-envv.rc Normal file → Executable file
View File

14
examples/example-secrets.rc Normal file → Executable file
View File

@@ -48,12 +48,12 @@ export DOCKER_BUILDKIT=1
# export BUILDER_REPO=""
# ### shared g3-cache is outside the Docker building context
# export SHARED_G3_CACHE_PATH=""
# ### building process control
# # export FORCE_PUBLISHING_BUILDER_REPO=1
# export FORCE_BUILDING=0
# ### used to control building/publishing (unset means '0')
# export FORCE_PUBLISHING_BUILDER_REPO=1
# export FORCE_BUILDING=1
# ### used by the 'post_push' hook script, which normally removes the helper files
# # export KEEP_HELPER_FILES=0
### explicitly disable features that are enabled by default
# ### explicitly disable features that are enabled by default
# # export FEATURES_NOVNC=0
# # export FEATURES_FIREFOX_PLUS=0
# # export FEATURES_OVERRIDING_ENVV=0
@@ -82,9 +82,9 @@ export DOCKER_BUILDKIT=1
# export BUILDER_REPO=""
# ### shared g3-cache is outside the Docker building context
# export SHARED_G3_CACHE_PATH=""
# ### building process control
# export FORCE_PUBLISHING_BUILDER_REPO=0
# export FORCE_BUILDING=0
# ### used to control building/publishing (unset means '0')
# export FORCE_PUBLISHING_BUILDER_REPO=1
# export FORCE_BUILDING=1
# ### used by the 'post_push' hook script, which normally removes the helper files
# export KEEP_HELPER_FILES=0
# ### explicitly disable features that are enabled by default

0
examples/example.yml Normal file → Executable file
View File

0
readme-builder.md Normal file → Executable file
View File

0
readme-ci-builder.md Normal file → Executable file
View File

0
readme-g3-cache.md Normal file → Executable file
View File

36
readme-local-building-example.md Normal file → Executable file
View File

@@ -21,6 +21,8 @@
- [Disabling `noVNC`](#disabling-novnc)
- [Disabling `Firefox Plus`](#disabling-firefox-plus)
- [README files for Docker Hub](#readme-files-for-docker-hub)
- [Tips and examples](#tips-and-examples)
- [How to deploy all images into one repository](#how-to-deploy-all-images-into-one-repository)
## Introduction
@@ -360,6 +362,40 @@ For example, the `README` file for the repository `accetto/debian-vnc-xfce-g3` c
./util-readme.sh --repo accetto/debian-vnc-xfce-g3 --context=../docker/xfce -- preview
```
## Tips and examples
### How to deploy all images into one repository
There are three deployment repositories by default.
Their names are defined by the following environment variables:
- `DEPLOYMENT_REPO` for generic images
- `DEPLOYMENT_REPO_CHROMIUM` for images with Chromium
- `DEPLOYMENT_REPO_FIREFOX` for images with Firefox
The forth variable `BUILDER_REPO` defines the name of the *builder repository*, which is not used for deployment by default.
However, the images can be optionally published also into the *builder repository* by setting the environment variable `FORCE_PUBLISHING_BUILDER_REPO=1`.
The images in the builder repository are distinguished by their tags.
On the other hand, if the repository environment variables are unset or set to the reserved value `void`, then the deployment into the related repository will be skipped.
This behaviour can be used, if you want to publish all the images into a single repository.
Simply set all repositories except the builder one to `void` and force the publishing into the builder repository.
For example, for publishing all the images into a single repository `headless-debian-g3` set the variables like this:
```shell
DEPLOYMENT_REPO="void"
DEPLOYMENT_REPO_CHROMIUM="void"
DEPLOYMENT_REPO_FIREFOX="void"
BUILDER_REPO="headless-debian-g3"
FORCE_PUBLISHING_BUILDER_REPO=1
```
***
[accetto-github-ubuntu-vnc-xfce-g3]: https://github.com/accetto/ubuntu-vnc-xfce-g3

0
utils/readme-util-readme-examples.md Normal file → Executable file
View File

0
utils/util-readme.sh Normal file → Executable file
View File