Compare commits
21 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d6a0039cda | |||
| 824f644575 | |||
| e1b16e2d2b | |||
| 30f7683720 | |||
| 0c4e90b0ae | |||
| c8046f0424 | |||
| b8ec8e4c7e | |||
| aa7ac5670c | |||
| 4d6be40370 | |||
| 0edb92f1de | |||
| 71ecf06dd8 | |||
|
|
93515c7dfa | ||
|
|
bdacf64e1d | ||
|
|
5222ada048 | ||
|
|
1498941651 | ||
|
|
fb8a52cd7a | ||
|
|
ac70dbfc74 | ||
|
|
39e366dea2 | ||
|
|
b37eeeb65f | ||
|
|
a3dcc36bf9 | ||
|
|
931ef78dc6 |
0
.gitattributes
vendored
Normal file → Executable file
2
.gitignore
vendored
Normal file → Executable file
@@ -23,6 +23,6 @@
|
||||
avanti*
|
||||
debug*
|
||||
scrap*
|
||||
secret*
|
||||
#secret*
|
||||
TODO*
|
||||
*.log
|
||||
|
||||
42
CHANGELOG.md
Normal file → Executable 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].
|
||||
|
||||
6
README.md
Normal file → Executable 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
|
||||
|
||||
5
build-base-and-push-to-gitea.sh
Executable 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
|
||||
5
build-chromium-and-push-to-gitea.sh
Executable 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
|
||||
5
build-firefox-and-push-to-gitea.sh
Executable 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
@@ -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
@@ -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
@@ -2,3 +2,4 @@
|
||||
!src
|
||||
!xfce*
|
||||
!.g3-cache
|
||||
|
||||
|
||||
0
docker/Dockerfile
Normal file → Executable file
12
docker/Dockerfile.xfce → docker/Dockerfile.xfce.11
Normal file → Executable 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
@@ -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
BIN
docker/doc/images/animation-debian-vnc-xfce-chromium-g3.gif
Executable file
|
After Width: | Height: | Size: 464 KiB |
BIN
docker/doc/images/animation-debian-vnc-xfce-firefox-g3.gif
Executable file
|
After Width: | Height: | Size: 453 KiB |
BIN
docker/doc/images/animation-debian-vnc-xfce-g3.gif
Executable file
|
After Width: | Height: | Size: 471 KiB |
|
Before Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 40 KiB |
6
docker/hooks/build
Normal file → Executable 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
58
docker/hooks/env.rc
Normal file → Executable 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
@@ -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
@@ -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
@@ -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
116
docker/hooks/secrets.rc
Executable 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
18
docker/src/home/.bashrc
Executable 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
0
docker/src/xfce-startup/help.rc
Normal file → Executable file
0
docker/src/xfce-startup/parser.rc
Normal file → Executable file
0
docker/src/xfce-startup/set_user_permissions.sh
Normal file → Executable file
0
docker/src/xfce-startup/startup.sh
Normal file → Executable file
0
docker/src/xfce-startup/user_generator.rc
Normal file → Executable file
2
docker/src/xfce-startup/version_of.sh
Normal file → Executable 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
0
docker/src/xfce-startup/vnc_startup.rc
Normal file → Executable file
43
docker/xfce-chromium/README-dockerhub.md
Normal file → Executable 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 don’t 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 don’t 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
@@ -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
@@ -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
0
docker/xfce-chromium/src/home/readme-chromium.md
Normal file → Executable file
35
docker/xfce-firefox/README-dockerhub.md
Normal file → Executable 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 don’t 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 don’t 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
@@ -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
@@ -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-firefox/src/firefox.plus/home/Desktop/Copy FF Preferences.desktop
Normal file → Executable file
0
docker/xfce-firefox/src/firefox.plus/home/Desktop/FF Profile Manager.desktop
Normal file → Executable file
0
docker/xfce-firefox/src/firefox.plus/home/readme-firefox-plus.md
Normal file → Executable file
0
docker/xfce-firefox/src/firefox.plus/resources/accetto.svg
Normal file → Executable file
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |
0
docker/xfce-firefox/src/firefox.plus/resources/copy_firefox_user_preferences.sh
Normal file → Executable file
0
docker/xfce-firefox/src/firefox.plus/resources/user.js
Normal file → Executable file
0
docker/xfce-firefox/src/home/Desktop/firefox-esr.desktop
Normal file → Executable file
27
docker/xfce/README-dockerhub.md
Normal file → Executable 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 don’t 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 don’t 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
@@ -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
@@ -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
0
docker/xfce/src/home/config/xfce4/terminal/terminalrc
Normal file → Executable file
0
docker/xfce/src/home/config/xfce4/xfconf/xfce-perchannel-xml/keyboard-layout.xml
Normal file → Executable file
0
docker/xfce/src/home/config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml
Normal file → Executable file
0
docker/xfce/src/home/config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml
Normal file → Executable file
0
docker/xfce/src/home/readme.md
Normal file → Executable file
0
examples/Dockerfile.extend
Normal file → Executable file
0
examples/example-override-envv.rc
Normal file → Executable file
14
examples/example-secrets.rc
Normal file → Executable 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
0
readme-builder.md
Normal file → Executable file
0
readme-ci-builder.md
Normal file → Executable file
0
readme-g3-cache.md
Normal file → Executable file
36
readme-local-building-example.md
Normal file → Executable 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
|
||||
|
||||