Skip to content

Commit

Permalink
Release 23.02.1
Browse files Browse the repository at this point in the history
  • Loading branch information
accetto committed Feb 22, 2023
1 parent a05de1a commit 12044d9
Show file tree
Hide file tree
Showing 14 changed files with 252 additions and 49 deletions.
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,17 @@

***

### Release 23.02.1

Features `NOVNC` and `FIREFOX_PLUS`, that are enabled by default, can be disabled via environment variables:

- If `FEATURES_NOVNC="0"`, then
- image will not include `noVNC`
- image tag will get the `-vnc` suffix (e.g. `latest-vnc`, `20.04-firefox-vnc` etc.)
- If `FEATURES_FIREFOX_PLUS="0"` and `FEATURES_FIREFOX="1"`, then
- image with Firefox will not include the *Firefox Plus features*
- image tag will get the `-default` suffix (e.g. `latest-firefox-default` or also `latest-firefox-default-vnc` etc.)

### Release 23.02

This is the first `G3v4` release, introducing the updated startup scripts. The previous version `G3v3` will still be available in this repository as the branch `archived-generation-g3v3`.
Expand Down
10 changes: 9 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ The resources for the individual images and their variations (tags) are stored i

There are also sibling projects containing images for headless programming ([accetto/headless-coding-g3][accetto-github-headless-coding-g3]) or headless diagramming, vector drawing and bitmap image editing ([accetto/headless-drawing-g3][accetto-github-headless-drawing-g3]).

There is also another sibling project [accetto/debian-vnc-xfce-g3][accetto-github-debian-vnc-xfce-g3] containing similar images based on [Debian][docker-debian].

### TL;DR

There are currently resources for the following Docker images:
Expand Down Expand Up @@ -96,7 +98,7 @@ You can check the current shared memory size by executing the following command
df -h /dev/shm
```

The Wiki page [Firefox multi-process][that-wiki-firefox-multiprocess] describes several ways, how to increase the shared memory size.
The older sibling Wiki page [Firefox multi-process][that-wiki-firefox-multiprocess] describes several ways, how to increase the shared memory size.

#### Extending images

Expand Down Expand Up @@ -252,6 +254,8 @@ Image variations are build from fewer Dockerfiles. This is allowed by using *mul

Flexibility in Dockerfiles is supported by introducing the concept of **features**. These are variables that control the building process. For example, the variable **FEATURES_BUILD_SLIM** controls the `--no-install-recommends` switch, the variable **FEATURES_NOVNC** controls the inclusion of `noVNC` and so on. Some other available features include, for example, the **FEATURES_SCREENSHOOTING** and **FEATURES_THUMBNAILING** variables. Also the web browsers [Chromium][chromium] and [Firefox][firefox] are defined as features controlled by the variables **FEATURES_CHROMIUM**, **FEATURES_FIREFOX** and **FEATURES_FIREFOX_PLUS**.

Selected features that are enabled by default can be explicitly disabled via environment variables. See [readme-local-building-example.md][this-readme-local-building-example] for more information.

#### Faster building with `g3-cache`

Building performance has been significantly improved by introducing a local cache (`g3-cache`), which contains the external packages that would be otherwise downloaded by each build. Refreshing the cache is part of the building pipeline. The Dockerfiles fall back to the ad-hoc downloading if the local cache is not available.
Expand Down Expand Up @@ -342,6 +346,8 @@ Credit goes to all the countless people and companies, who contribute to open so
[this-readme-image-chromium]: https://github.com/accetto/ubuntu-vnc-xfce-g3/blob/master/docker/xfce-chromium/README.md
[this-readme-image-firefox]: https://github.com/accetto/ubuntu-vnc-xfce-g3/tree/master/docker/xfce-firefox

[this-readme-local-building-example]: https://github.com/accetto/ubuntu-vnc-xfce-g3/blob/master/readme-local-building-example.md

[accetto-docker-ubuntu-vnc-xfce-g3]: https://hub.docker.com/r/accetto/ubuntu-vnc-xfce-g3
[accetto-docker-ubuntu-vnc-xfce-chromium-g3]: https://hub.docker.com/r/accetto/ubuntu-vnc-xfce-chromium-g3

Expand All @@ -356,6 +362,7 @@ Credit goes to all the countless people and companies, who contribute to open so

[accetto-github-headless-coding-g3]: https://github.com/accetto/headless-coding-g3
[accetto-github-headless-drawing-g3]: https://github.com/accetto/headless-drawing-g3
[accetto-github-debian-vnc-xfce-g3]: https://github.com/accetto/debian-vnc-xfce-g3

<!-- Previous generations -->

Expand All @@ -364,6 +371,7 @@ Credit goes to all the countless people and companies, who contribute to open so
<!-- external links -->

[docker-ubuntu]: https://hub.docker.com/_/ubuntu/
[docker-debian]: https://hub.docker.com/_/debian/

[docker-doc-build-with-buildkit]: https://docs.docker.com/develop/develop-images/build_enhancements/

Expand Down
71 changes: 58 additions & 13 deletions docker/hooks/env.rc
Original file line number Diff line number Diff line change
Expand Up @@ -86,9 +86,13 @@ if [[ "${FEATURES_THUMBNAILING}" == "1" ]] ; then FEATURES_THUMBNAILING=1 ; else
if [[ "${FEATURES_CHROMIUM}" == "1" ]] ; then FEATURES_CHROMIUM=1 ; else FEATURES_CHROMIUM="" ; fi
if [[ "${FEATURES_FIREFOX}" == "1" ]] ; then FEATURES_FIREFOX=1 ; else FEATURES_FIREFOX="" ; fi

### since 'ubuntu:latest=22.04', these features are enabled by default (see below)
# if [[ "${FEATURES_FIREFOX_PLUS}" == "1" ]] ; then FEATURES_FIREFOX_PLUS=1 ; else FEATURES_FIREFOX_PLUS="" ; fi
### These features are always enabled and cannot be disabled via environment variables
FEATURES_VNC=1

### These features are enabled by default but can be disabled via environment variables (see below)
### however, they can be disabled via environment variables (see below)
# if [[ "${FEATURES_NOVNC}" == "1" ]] ; then FEATURES_NOVNC=1 ; else FEATURES_NOVNC="" ; fi
# if [[ "${FEATURES_FIREFOX_PLUS}" == "1" ]] ; then FEATURES_FIREFOX_PLUS=1 ; else FEATURES_FIREFOX_PLUS="" ; fi

### The reason for this 'case' is to support some special branches/builds if required.
case "${_branch}" in
Expand All @@ -100,7 +104,6 @@ case "${_branch}" in
BASEIMAGE="${BASEIMAGE:-ubuntu}"

### hardcoded settings
FEATURES_VNC=1
TIGERVNC_VERSION="1.13.0"
TIGERVNC_DISTRO="x86_64"
NOVNC_VERSION="1.4.0"
Expand Down Expand Up @@ -140,37 +143,59 @@ case "${_branch}" in
| jammy | jammy-chromium | jammy-firefox \
| focal | focal-chromium | focal-firefox )

### since 'ubuntu:latest=22.04', this feature is enabled by default
FEATURES_NOVNC=1
### this feature is enabled by default
### however, it can be disabled via environment variables (export FEATURES_NOVNC=0)
if [[ "${FEATURES_NOVNC}" == "0" ]] ; then
FEATURES_NOVNC=""
else
FEATURES_NOVNC="1"
fi

### images with chromium
if [[ "${_blend}" =~ chromium ]] ; then

FEATURES_CHROMIUM=1
CHROMIUM_VERSION=$( "${_mydir}"/${_script_release_of} 'chromium-1804' )

_deploy_repo="${_owner}/${DEPLOYMENT_REPO_CHROMIUM}"
_readme_context="docker/xfce-chromium"
else
FEATURES_CHROMIUM=""
fi

elif [[ "${_blend}" =~ firefox ]] ; then
### images with firefox
if [[ "${_blend}" =~ firefox ]] ; then

FEATURES_FIREFOX=1

### since 'ubuntu:latest=22.04', this feature is enabled by default
FEATURES_FIREFOX_PLUS=1
### this feature is enabled by default
### however, it can be disabled via environment variables (export FEATURES_FIREFOX_PLUS=0)
if [[ "${FEATURES_FIREFOX_PLUS}" == "0" ]] ; then
FEATURES_FIREFOX_PLUS=""
else
FEATURES_FIREFOX_PLUS="1"
fi

_deploy_repo="${_owner}/${DEPLOYMENT_REPO_FIREFOX}"
_readme_context="docker/xfce-firefox"

else
FEATURES_FIREFOX=""
FEATURES_FIREFOX_PLUS=""
fi

### base images
if [[ ! "${_blend}" =~ chromium|firefox ]] ; then

### be sure to reset these features
FEATURES_CHROMIUM=""
FEATURES_FIREFOX=""
FEATURES_FIREFOX_PLUS=""

_deploy_repo="${_owner}/${DEPLOYMENT_REPO}"
_readme_context="docker/xfce"
fi

### since 'ubuntu:latest=22.04', 'firefox:latest=firefox:plus'
# _deploytag="${_deploytag}${FEATURES_FIREFOX_PLUS:+-plus}"

### normalize tags
### normalize deployment tags
case "${_blend}" in

latest | latest-* )
Expand All @@ -197,13 +222,33 @@ case "${_branch}" in
die "Unsupported blend '${_blend}'"
;;
esac

### add optional suffixes to deployment tags

if [[ "${FEATURES_FIREFOX}" == "1" && -z "${FEATURES_FIREFOX_PLUS}" ]] ; then

DOCKER_TAG="${DOCKER_TAG}-default"
for i in "${!_deploy_tags[@]}" ; do
_deploy_tags[$i]="${_deploy_tags[$i]}-default"
done
fi

if [[ -z "${FEATURES_NOVNC}" ]] ; then

DOCKER_TAG="${DOCKER_TAG}-vnc"
for i in "${!_deploy_tags[@]}" ; do
_deploy_tags[$i]="${_deploy_tags[$i]}-vnc"
done
fi
;;

* )
die "Unsupported blend '${_blend}'"
;;

esac
;;

* )
die "Unsupported branch '${_branch}'"
;;
Expand Down
21 changes: 16 additions & 5 deletions docker/xfce-chromium/README-dockerhub.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@

This repository contains Docker images based on [Ubuntu 20.04 LTS][docker-ubuntu] with [Xfce][xfce] desktop environment, [VNC][tigervnc]/[noVNC][novnc] servers for headless use and the current [Chromium][chromium] web browser.

There is also a similar sibling image [accetto/debian-vnc-xfce-chromium-g3][accetto-dockerhub-debian-vnc-xfce-chromium-g3] based on [Debian][docker-debian].

This is the **short README** version for the **Docker Hub**. There is also the [full-length README][this-readme-full] on the **GitHub**.

### TL;DR
Expand Down Expand Up @@ -57,7 +59,7 @@ You can check the current shared memory size by executing the following command
df -h /dev/shm
```

The Wiki page [Firefox multi-process][that-wiki-firefox-multiprocess] describes several ways, how to increase the shared memory size.
The older sibling Wiki page [Firefox multi-process][that-wiki-firefox-multiprocess] describes several ways, how to increase the shared memory size.

#### Extending images

Expand Down Expand Up @@ -88,6 +90,10 @@ The fastest way to build the images:
./ci-builder.sh all family latest-chromium
```

You can still execute the individual hook scripts as before (see the folder `/docker/hooks/`). However, the provided utilities `builder.sh` and `ci-builder.sh` are more convenient. Before pushing the images to the **Docker Hub** you have to prepare and source the file `secrets.rc` (see `example-secrets.rc`). The script `builder.sh` builds the individual images. The script `ci-builder.sh` can build various groups of images or all of them at once. Check the files `local-builder-readme.md`, `local-building-example.md` and [Wiki][this-wiki] for more information.

Note that selected features that are enabled by default can be explicitly disabled via environment variables. This allows to build even smaller images by excluding, for example, `noVNC`. See [readme-local-building-example.md][this-readme-local-building-example] for more information.

#### Sharing devices

Sharing the audio device for video with sound works only with `Chromium` and only on Linux:
Expand Down Expand Up @@ -134,8 +140,6 @@ xhost -local:$(whoami)

This is the **third generation** (G3) of my headless images. The **second generation** (G2) of similar images is contained in the GitHub repository [accetto/xubuntu-vnc-novnc][accetto-github-xubuntu-vnc-novnc]. The **first generation** (G1) of similar images is contained in the GitHub repository [accetto/ubuntu-vnc-xfce][accetto-github-ubuntu-vnc-xfce].

More information about the image generations can be found in the [project README][this-readme-project] file and in [Wiki][this-wiki].

The main features and components of the images in the default configuration are:

- utilities **ping**, **wget**, **sudo** (Ubuntu distribution)
Expand All @@ -147,7 +151,7 @@ The main features and components of the images in the default configuration are:
- lite but advanced graphical editor [mousepad][mousepad] (Ubuntu distribution)
- current version of [tini][tini] as the entry-point initial process (PID 1)
- support for overriding both the container user and the group
- support of **version sticker** (see below)
- support of **version sticker** (see the [full-length README][this-readme-full] on the **GitHub**)
- current version of [Chromium Browser][chromium] open-source web browser (from the `Ubuntu 18.04 LTS` distribution)

The history of notable changes is documented in the [CHANGELOG][this-changelog].
Expand All @@ -156,7 +160,7 @@ The history of notable changes is documented in the [CHANGELOG][this-changelog].

### Image tags

The following image tag on Docker Hub is regularly rebuilt:
The following image tags are regularly built and published on the **Docker Hub**:

- `latest` (also as `22.04`) based on `Ubuntu 22.04 LTS`

Expand Down Expand Up @@ -186,6 +190,8 @@ More information about these images can be found in the [full-length README][thi
[this-readme-project]: https://github.com/accetto/ubuntu-vnc-xfce-g3/blob/master/README.md
[this-wiki]: https://github.com/accetto/ubuntu-vnc-xfce-g3/wiki

[this-readme-local-building-example]: https://github.com/accetto/ubuntu-vnc-xfce-g3/blob/master/readme-local-building-example.md

<!-- Docker image specific -->

[this-docker]: https://hub.docker.com/r/accetto/ubuntu-vnc-xfce-chromium-g3/
Expand All @@ -194,6 +200,10 @@ More information about these images can be found in the [full-length README][thi

[this-screenshot-container]: https://raw.githubusercontent.com/accetto/ubuntu-vnc-xfce-g3/master/docker/doc/images/ubuntu-vnc-xfce-chromium.jpg

<!-- Sibling projects -->

[accetto-dockerhub-debian-vnc-xfce-chromium-g3]: https://hub.docker.com/r/accetto/debian-vnc-xfce-chromium-g3

<!-- Previous generations -->

[accetto-github-xubuntu-vnc-novnc]: https://github.com/accetto/xubuntu-vnc-novnc/
Expand All @@ -203,6 +213,7 @@ More information about these images can be found in the [full-length README][thi
<!-- External links -->

[docker-ubuntu]: https://hub.docker.com/_/ubuntu/
[docker-debian]: https://hub.docker.com/_/debian/

<!-- [docker-doc]: https://docs.docker.com/ -->
<!-- [docker-doc-managing-data]: https://docs.docker.com/storage/ -->
Expand Down
Loading

0 comments on commit 12044d9

Please sign in to comment.