Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7d1417aed5 | |||
| b0d7a185c6 | |||
| 2c42363e7e | |||
| 63f22ae69b | |||
| 52ed4490ff | |||
| 9254d67843 | |||
| 182d071e2c |
@@ -6,6 +6,15 @@
|
||||
|
||||
***
|
||||
|
||||
### Release 23.03.1
|
||||
|
||||
This is a maintenance release aiming to improve the scripts and documentation.
|
||||
|
||||
### Release 23.03
|
||||
|
||||
- updated with `TigerVNC 1.13.1` bugfix release
|
||||
- also some updates in readme files
|
||||
|
||||
### Release 23.02
|
||||
|
||||
The initial version of the project has been derived from the sibling project [accetto/ubuntu-vnc-xfce-g3][accetto-github-ubuntu-vnc-xfce-g3] (version G3v4, release 23.02.1).
|
||||
|
||||
@@ -25,21 +25,21 @@ Version: G3v1
|
||||
|
||||
- [Headless Debian/Xfce containers with VNC/noVNC](#headless-debianxfce-containers-with-vncnovnc)
|
||||
- [Project `accetto/debian-vnc-xfce-g3`](#project-accettodebian-vnc-xfce-g3)
|
||||
- [Introduction](#introduction)
|
||||
- [TL;DR](#tldr)
|
||||
- [Installing packages](#installing-packages)
|
||||
- [Shared memory size](#shared-memory-size)
|
||||
- [Extending images](#extending-images)
|
||||
- [Building images](#building-images)
|
||||
- [Sharing devices](#sharing-devices)
|
||||
- [Image generations](#image-generations)
|
||||
- [Project versions](#project-versions)
|
||||
- [Project goals](#project-goals)
|
||||
- [Project features](#project-features)
|
||||
- [Introduction](#introduction)
|
||||
- [TL;DR](#tldr)
|
||||
- [Installing packages](#installing-packages)
|
||||
- [Shared memory size](#shared-memory-size)
|
||||
- [Extending images](#extending-images)
|
||||
- [Building images](#building-images)
|
||||
- [Sharing devices](#sharing-devices)
|
||||
- [Image generations](#image-generations)
|
||||
- [Project versions](#project-versions)
|
||||
- [Project goals](#project-goals)
|
||||
- [Project features](#project-features)
|
||||
- [Issues, Wiki and Discussions](#issues-wiki-and-discussions)
|
||||
- [Credits](#credits)
|
||||
|
||||
### Introduction
|
||||
## Introduction
|
||||
|
||||
This repository contains resources for building Docker images based on [Debian 11][docker-debian] with [Xfce][xfce] desktop environment and [VNC][tigervnc]/[noVNC][novnc] servers for headless use.
|
||||
|
||||
@@ -47,7 +47,7 @@ The resources for the individual images and their variations (tags) are stored i
|
||||
|
||||
The repository 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].
|
||||
|
||||
### TL;DR
|
||||
## TL;DR
|
||||
|
||||
There are currently resources for the following Docker images:
|
||||
|
||||
@@ -60,7 +60,7 @@ There are currently resources for the following Docker images:
|
||||
- [accetto/debian-vnc-xfce-firefox-g3][accetto-docker-debian-vnc-xfce-firefox-g3]
|
||||
- [full Readme][this-readme-image-firefox]
|
||||
|
||||
#### Installing packages
|
||||
### Installing packages
|
||||
|
||||
I try to keep the images slim. Consequently you can sometimes encounter missing dependencies while adding more applications yourself. You can track the missing libraries on the [Debian Packages Search][debian-packages-search] page and install them subsequently.
|
||||
|
||||
@@ -73,7 +73,7 @@ sudo apt-get update
|
||||
sudo apt --fix-broken install
|
||||
```
|
||||
|
||||
#### Shared memory size
|
||||
### Shared memory size
|
||||
|
||||
Note that some applications require larger shared memory than the default 64MB. Using 256MB usually solves crashes or strange behavior.
|
||||
|
||||
@@ -85,7 +85,7 @@ df -h /dev/shm
|
||||
|
||||
The older sibling Wiki page [Firefox multi-process][that-wiki-firefox-multiprocess] describes several ways, how to increase the shared memory size.
|
||||
|
||||
#### Extending images
|
||||
### Extending images
|
||||
|
||||
The provided example file `Dockerfile.extend` shows how to use the images as the base for your own images.
|
||||
|
||||
@@ -93,7 +93,7 @@ Your concrete `Dockerfile` may need more statements, but the concept should be c
|
||||
|
||||
The compose file `example.yml` shows how to switch to another non-root user and how to set the VNC password and resolution.
|
||||
|
||||
#### Building images
|
||||
### Building images
|
||||
|
||||
The fastest way to build the images:
|
||||
|
||||
@@ -125,9 +125,9 @@ The fastest way to build the images:
|
||||
### and so on
|
||||
```
|
||||
|
||||
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 the [sibling Wiki][sibling-wiki] for more information.
|
||||
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 [builder-utility-readme][this-builder-readme], [local-building-example][this-readme-local-building-example] and [sibling Wiki][sibling-wiki] for more information.
|
||||
|
||||
#### Sharing devices
|
||||
### Sharing devices
|
||||
|
||||
Sharing the audio device for video with sound works only with `Chromium` and only on Linux:
|
||||
|
||||
@@ -165,21 +165,21 @@ docker run -it -P --rm \
|
||||
xhost -local:$(whoami)
|
||||
```
|
||||
|
||||
### Image generations
|
||||
## Image generations
|
||||
|
||||
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].
|
||||
|
||||
### Project versions
|
||||
## Project versions
|
||||
|
||||
This file describes the **first generation** (G3v1) of this project, which however corresponds to the **fourth version** (G3v4) of the **sibling project** [accetto/ubuntu-vnc-xfce-g3][accetto-github-ubuntu-vnc-xfce-g3].
|
||||
|
||||
Please refer to the [sibling project][accetto-github-ubuntu-vnc-xfce-g3_project-versions] to learn more about the older project versions.
|
||||
|
||||
### Project goals
|
||||
## Project goals
|
||||
|
||||
Please refer to the [sibling project][accetto-github-ubuntu-vnc-xfce-g3_project-goals] to learn more about the project goals.
|
||||
|
||||
### Project features
|
||||
## Project features
|
||||
|
||||
Please refer to the [sibling project][accetto-github-ubuntu-vnc-xfce-g3_project-features] to learn more about the project features.
|
||||
|
||||
@@ -205,14 +205,15 @@ Credit goes to all the countless people and companies, who contribute to open so
|
||||
<!-- [this-github]: https://github.com/accetto/debian-vnc-xfce-g3/ -->
|
||||
[this-issues]: https://github.com/accetto/debian-vnc-xfce-g3/issues
|
||||
|
||||
[this-diagram-dockerfile-stages]: https://raw.githubusercontent.com/accetto/debian-vnc-xfce-g3/master/docker/doc/images/Dockerfile.xfce.png
|
||||
|
||||
[this-dockerfile]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/docker/Dockerfile.xfce
|
||||
|
||||
[this-readme-image-base]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/docker/xfce/README.md
|
||||
[this-readme-image-chromium]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/docker/xfce-chromium/README.md
|
||||
[this-readme-image-firefox]: https://github.com/accetto/debian-vnc-xfce-g3/tree/master/docker/xfce-firefox
|
||||
|
||||
[this-builder-readme]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/readme-builder.md
|
||||
[this-readme-local-building-example]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/readme-local-building-example.md
|
||||
|
||||
[accetto-docker-debian-vnc-xfce-g3]: https://hub.docker.com/r/accetto/debian-vnc-xfce-g3
|
||||
[accetto-docker-debian-vnc-xfce-chromium-g3]: https://hub.docker.com/r/accetto/debian-vnc-xfce-chromium-g3
|
||||
[accetto-docker-debian-vnc-xfce-firefox-g3]: https://hub.docker.com/r/accetto/debian-vnc-xfce-firefox-g3
|
||||
|
||||
+1
-2
@@ -1,4 +1,4 @@
|
||||
#!/bin/bash -e
|
||||
#!/bin/bash
|
||||
|
||||
echo -e "\n==> EXECUTING @$(date -u +'%Y-%m-%d_%H-%M-%S'): ${0} $@\n"
|
||||
|
||||
@@ -66,7 +66,6 @@ main() {
|
||||
### no quotes around 'params'
|
||||
docker build ${params} \
|
||||
-f "${DOCKERFILE_PATH}" \
|
||||
--build-arg BUILDKIT_INLINE_CACHE=1 \
|
||||
--build-arg BASEIMAGE="${BASEIMAGE}" \
|
||||
--build-arg BASETAG="${BASETAG}" \
|
||||
--build-arg ARG_CREATED="${now}" \
|
||||
|
||||
+2
-2
@@ -1,4 +1,5 @@
|
||||
#!/bin/bash -e
|
||||
#!/bin/bash
|
||||
|
||||
### @accetto, September 2022
|
||||
### updated: January 2023
|
||||
|
||||
@@ -156,7 +157,6 @@ main() {
|
||||
|
||||
declare _quiet=""
|
||||
declare _mark="\n==> G3-CACHE"
|
||||
declare _script_release_of="release_of"
|
||||
declare _cache="${_build_context}/.g3-cache"
|
||||
declare _shared_cache_path="${SHARED_G3_CACHE_PATH}"
|
||||
|
||||
|
||||
+2
-2
@@ -31,7 +31,7 @@ declare _blend="${DOCKER_TAG:-$2}"
|
||||
declare _owner="${REPO_OWNER_NAME:?Need repo owner name}"
|
||||
|
||||
### utility scripts
|
||||
declare _script_release_of="release_of"
|
||||
# declare _script_release_of="release_of" # currently unused
|
||||
|
||||
### using this repository name will prohibit the publishing
|
||||
declare _prohibited_repo_name="void"
|
||||
@@ -104,7 +104,7 @@ case "${_branch}" in
|
||||
BASEIMAGE="${BASEIMAGE:-debian}"
|
||||
|
||||
### hardcoded settings
|
||||
TIGERVNC_VERSION="1.13.0"
|
||||
TIGERVNC_VERSION="1.13.1"
|
||||
TIGERVNC_DISTRO="x86_64"
|
||||
NOVNC_VERSION="1.4.0"
|
||||
WEBSOCKIFY_VERSION="0.11.0"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/bash -e
|
||||
#!/bin/bash
|
||||
|
||||
### 2022-09-11 Warning
|
||||
### It seems like the README publishing is currently not always working.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/bash -e
|
||||
#!/bin/bash
|
||||
|
||||
echo -e "\n==> EXECUTING @$(date -u +'%Y-%m-%d_%H-%M-%S'): ${0} $@\n"
|
||||
|
||||
@@ -61,7 +61,6 @@ main() {
|
||||
### no quotes around 'params'
|
||||
docker build ${params} \
|
||||
-f "${DOCKERFILE_PATH}" \
|
||||
--build-arg BUILDKIT_INLINE_CACHE=1 \
|
||||
--build-arg BASEIMAGE="${BASEIMAGE}" \
|
||||
--build-arg BASETAG="${BASETAG}" \
|
||||
\
|
||||
|
||||
+2
-1
@@ -1,4 +1,5 @@
|
||||
#!/bin/bash -e
|
||||
#!/bin/bash
|
||||
|
||||
### @accetto, August 2021
|
||||
|
||||
echo -e "\n==> EXECUTING @$(date -u +'%Y-%m-%d_%H-%M-%S'): ${0} $@\n"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/bash -e
|
||||
#!/bin/bash
|
||||
|
||||
main() {
|
||||
local result=""
|
||||
@@ -18,7 +18,7 @@ main() {
|
||||
|
||||
echo "${result}"
|
||||
else
|
||||
echo "Exiting '${0}' with code '1' because not able to get version of '$1'"
|
||||
echo "Exiting '${0}' with code '1' because unable to get version of '$1'"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -90,9 +90,9 @@ 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 the [sibling Wiki][sibling-wiki] for more information.
|
||||
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 [builder-utility-readme][this-builder-readme], [local-building-example][this-readme-local-building-example] and [sibling Wiki][sibling-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.
|
||||
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 the [local-building-example][this-readme-local-building-example] for more information.
|
||||
|
||||
#### Sharing devices
|
||||
|
||||
@@ -181,6 +181,7 @@ More information about these images can be found in the [full-length README][thi
|
||||
[this-readme-full]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/docker/xfce-chromium/README.md
|
||||
[this-readme-project]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/README.md
|
||||
|
||||
[this-builder-readme]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/readme-builder.md
|
||||
[this-readme-local-building-example]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/readme-local-building-example.md
|
||||
|
||||
<!-- Docker image specific -->
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
|
||||
This repository contains resources for building Docker images based on [Debian 11][docker-debian] with [Xfce][xfce] desktop environment and [VNC][tigervnc]/[noVNC][novnc] servers for headless use and the current [Chromium][chromium] web browser.
|
||||
|
||||
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].
|
||||
There is also 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].
|
||||
|
||||
### TL;DR
|
||||
|
||||
@@ -102,9 +102,9 @@ The fastest way to build the images:
|
||||
./ci-builder.sh all group 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 the [sibling Wiki][sibling-wiki] for more information.
|
||||
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 [builder-utility-readme][this-builder-readme], [local-building-example][this-readme-local-building-example] and [sibling Wiki][sibling-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.
|
||||
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 the [local-building-example][this-readme-local-building-example] for more information.
|
||||
|
||||
#### Sharing devices
|
||||
|
||||
@@ -193,7 +193,7 @@ Both **named volumes** and **bind mounts** can be used. More about volumes can b
|
||||
|
||||
### Version sticker
|
||||
|
||||
Version sticker serves multiple purposes that are closer described in the [sibling Wiki][sibling-wiki]. Note that the usage of the version sticker has changed between the generations of images.
|
||||
Version sticker serves multiple purposes that are closer described in the [sibling Wiki][sibling-wiki-version-stickers]. Note that the usage of the version sticker has changed between the generations of images.
|
||||
|
||||
The **short version sticker value** describes the version of the image and it is persisted in its **label** during the build-time. It is also shown as its **badge** in the README file.
|
||||
|
||||
@@ -612,6 +612,7 @@ The stage diagram doesn't differ from the [sibling project][accetto-github-ubunt
|
||||
[this-readme-dockerhub]: https://hub.docker.com/r/accetto/debian-vnc-xfce-chromium-g3
|
||||
[this-readme-project]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/README.md
|
||||
|
||||
[this-builder-readme]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/readme-builder.md
|
||||
[this-readme-local-building-example]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/readme-local-building-example.md
|
||||
|
||||
<!-- Docker image specific -->
|
||||
@@ -630,6 +631,8 @@ The stage diagram doesn't differ from the [sibling project][accetto-github-ubunt
|
||||
|
||||
[sibling-diagram-dockerfile-stages]: https://raw.githubusercontent.com/accetto/ubuntu-vnc-xfce-g3/master/docker/doc/images/Dockerfile.xfce.png
|
||||
|
||||
[sibling-wiki-version-stickers]: https://github.com/accetto/ubuntu-vnc-xfce-g3/wiki/Concepts-of-dockerfiles
|
||||
|
||||
<!-- Previous generations -->
|
||||
|
||||
[accetto-github-xubuntu-vnc-novnc]: https://github.com/accetto/xubuntu-vnc-novnc/
|
||||
|
||||
@@ -93,9 +93,9 @@ The fastest way to build the images:
|
||||
./ci-builder.sh all group latest-firefox
|
||||
```
|
||||
|
||||
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 the [sibling Wiki][sibling-wiki] for more information.
|
||||
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 [builder-utility-readme][this-builder-readme], [local-building-example][this-readme-local-building-example] and [sibling Wiki][sibling-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` or `Firefox Plus features`. See [readme-local-building-example.md][this-readme-local-building-example] 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` or `Firefox Plus features`. See the [local-building-example][this-readme-local-building-example] for more information.
|
||||
|
||||
#### Sharing devices
|
||||
|
||||
@@ -142,7 +142,7 @@ The main features and components of the images in the default configuration are:
|
||||
- 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 the [full-length README][this-readme-full] on the **GitHub**)
|
||||
- current version of [Firefox][firefox] web browser and some additional **Firefox plus features** described in the [full-length README][this-readme-full] on the GitHub
|
||||
- current version of [Firefox ESR (Extended Support Release)][firefox] web browser and some additional **Firefox plus features** described in the [full-length README][this-readme-full] on the GitHub
|
||||
|
||||
The history of notable changes is documented in the [CHANGELOG][this-changelog].
|
||||
|
||||
@@ -173,6 +173,7 @@ More information about these images can be found in the [full-length README][thi
|
||||
[this-readme-full]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/docker/xfce-firefox/README.md
|
||||
[this-readme-project]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/README.md
|
||||
|
||||
[this-builder-readme]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/readme-builder.md
|
||||
[this-readme-local-building-example]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/readme-local-building-example.md
|
||||
|
||||
<!-- Docker image specific -->
|
||||
|
||||
@@ -56,7 +56,7 @@ There is no single-process Firefox image in this repository any more and the **m
|
||||
|
||||
This repository contains resources for building Docker images based on [Debian 11][docker-debian] with [Xfce][xfce] desktop environment and [VNC][tigervnc]/[noVNC][novnc] servers for headless use and the current [Firefox][firefox] web browser.
|
||||
|
||||
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].
|
||||
There is also 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].
|
||||
|
||||
### TL;DR
|
||||
|
||||
@@ -111,9 +111,9 @@ The fastest way to build the images:
|
||||
./ci-builder.sh all group latest-firefox
|
||||
```
|
||||
|
||||
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 the [sibling Wiki][sibling-wiki] for more information.
|
||||
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 [builder-utility-readme][this-builder-readme], [local-building-example][this-readme-local-building-example] and [sibling Wiki][sibling-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` or `Firefox Plus features`. See [readme-local-building-example.md][this-readme-local-building-example] 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` or `Firefox Plus features`. See the [local-building-example][this-readme-local-building-example] for more information.
|
||||
|
||||
#### Sharing devices
|
||||
|
||||
@@ -160,7 +160,7 @@ The main features and components of the images in the default configuration are:
|
||||
- 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)
|
||||
- current version of [Firefox][firefox] web browser and some additional **Firefox plus features** described below
|
||||
- current version of [Firefox ESR (Extended Support Release)][firefox] web browser and some additional **Firefox plus features** described below
|
||||
|
||||
The history of notable changes is documented in the [CHANGELOG][this-changelog].
|
||||
|
||||
@@ -191,7 +191,7 @@ Both **named volumes** and **bind mounts** can be used. More about volumes can b
|
||||
|
||||
### Version sticker
|
||||
|
||||
Version sticker serves multiple purposes that are closer described in the [sibling Wiki][sibling-wiki]. Note that the usage of the version sticker has changed between the generations of images.
|
||||
Version sticker serves multiple purposes that are closer described in the [sibling Wiki][sibling-wiki-version-stickers]. Note that the usage of the version sticker has changed between the generations of images.
|
||||
|
||||
The **short version sticker value** describes the version of the image and it is persisted in its **label** during the build-time. It is also shown as its **badge** in the README file.
|
||||
|
||||
@@ -668,6 +668,7 @@ The stage diagram doesn't differ from the [sibling project][accetto-github-ubunt
|
||||
[this-readme-dockerhub]: https://hub.docker.com/r/accetto/debian-vnc-xfce-firefox-g3
|
||||
[this-readme-project]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/README.md
|
||||
|
||||
[this-builder-readme]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/readme-builder.md
|
||||
[this-readme-local-building-example]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/readme-local-building-example.md
|
||||
|
||||
<!-- Docker image specific -->
|
||||
@@ -686,6 +687,8 @@ The stage diagram doesn't differ from the [sibling project][accetto-github-ubunt
|
||||
|
||||
[sibling-diagram-dockerfile-stages]: https://raw.githubusercontent.com/accetto/ubuntu-vnc-xfce-g3/master/docker/doc/images/Dockerfile.xfce.png
|
||||
|
||||
[sibling-wiki-version-stickers]: https://github.com/accetto/ubuntu-vnc-xfce-g3/wiki/Concepts-of-dockerfiles
|
||||
|
||||
<!-- Previous generations -->
|
||||
|
||||
[accetto-github-xubuntu-vnc-novnc]: https://github.com/accetto/xubuntu-vnc-novnc/
|
||||
|
||||
@@ -87,9 +87,9 @@ The fastest way to build the images:
|
||||
./ci-builder.sh all group latest
|
||||
```
|
||||
|
||||
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 the [sibling Wiki][sibling-wiki] for more information.
|
||||
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 [builder-utility-readme][this-builder-readme], [local-building-example][this-readme-local-building-example] and [sibling Wiki][sibling-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.
|
||||
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 the [local-building-example][this-readme-local-building-example] for more information.
|
||||
|
||||
#### Sharing devices
|
||||
|
||||
@@ -166,6 +166,7 @@ More information about these images can be found in the [full-length README][thi
|
||||
[this-readme-full]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/docker/xfce/README.md
|
||||
[this-readme-project]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/README.md
|
||||
|
||||
[this-builder-readme]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/readme-builder.md
|
||||
[this-readme-local-building-example]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/readme-local-building-example.md
|
||||
|
||||
<!-- Docker image specific -->
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
|
||||
This repository contains resources for building Docker images based on [Debian 11][docker-debian] with [Xfce][xfce] desktop environment and [VNC][tigervnc]/[noVNC][novnc] servers for headless use.
|
||||
|
||||
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].
|
||||
There is also 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].
|
||||
|
||||
### TL;DR
|
||||
|
||||
@@ -102,9 +102,9 @@ The fastest way to build the images:
|
||||
./ci-builder.sh all group latest
|
||||
```
|
||||
|
||||
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 the [sibling Wiki][sibling-wiki] for more information.
|
||||
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 [builder-utility-readme][this-builder-readme], [local-building-example][this-readme-local-building-example] and [sibling Wiki][sibling-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.
|
||||
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 the [local-building-example][this-readme-local-building-example] for more information.
|
||||
|
||||
#### Sharing devices
|
||||
|
||||
@@ -181,7 +181,7 @@ Both **named volumes** and **bind mounts** can be used. More about volumes can b
|
||||
|
||||
### Version sticker
|
||||
|
||||
Version sticker serves multiple purposes that are closer described in the [sibling Wiki][sibling-wiki]. Note that the usage of the version sticker has changed between the generations of images.
|
||||
Version sticker serves multiple purposes that are closer described in the [sibling Wiki][sibling-wiki-version-stickers]. Note that the usage of the version sticker has changed between the generations of images.
|
||||
|
||||
The **short version sticker value** describes the version of the image and it is persisted in its **label** during the build-time. It is also shown as its **badge** in the README file.
|
||||
|
||||
@@ -600,6 +600,7 @@ The stage diagram doesn't differ from the [sibling project][accetto-github-ubunt
|
||||
[this-readme-dockerhub]: https://hub.docker.com/r/accetto/debian-vnc-xfce-g3
|
||||
[this-readme-project]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/README.md
|
||||
|
||||
[this-builder-readme]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/readme-builder.md
|
||||
[this-readme-local-building-example]: https://github.com/accetto/debian-vnc-xfce-g3/blob/master/readme-local-building-example.md
|
||||
|
||||
<!-- Docker image specific -->
|
||||
@@ -617,6 +618,8 @@ The stage diagram doesn't differ from the [sibling project][accetto-github-ubunt
|
||||
|
||||
[sibling-diagram-dockerfile-stages]: https://raw.githubusercontent.com/accetto/ubuntu-vnc-xfce-g3/master/docker/doc/images/Dockerfile.xfce.png
|
||||
|
||||
[sibling-wiki-version-stickers]: https://github.com/accetto/ubuntu-vnc-xfce-g3/wiki/Concepts-of-dockerfiles
|
||||
|
||||
<!-- Previous generations -->
|
||||
|
||||
[accetto-github-xubuntu-vnc-novnc]: https://github.com/accetto/xubuntu-vnc-novnc/
|
||||
|
||||
Binary file not shown.
@@ -14,12 +14,11 @@ FROM ${BASEIMAGE}:${BASETAG}
|
||||
USER 0
|
||||
|
||||
### update the apt cache and install your new packages
|
||||
### e.g. vim editor, gimp etc.
|
||||
### e.g. vim editor
|
||||
RUN \
|
||||
apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
vim \
|
||||
# gimp \
|
||||
&& apt-get -y autoremove \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
@@ -28,10 +27,6 @@ RUN \
|
||||
# COPY ./bashrc "${HOME}"/.bashrc
|
||||
# COPY ./firefox.plus/user.js "${HOME}"/firefox.plus/
|
||||
|
||||
### sometimes you need to set the file permisions again
|
||||
### e.g. if a newly installed app added some files
|
||||
# RUN "${STARTUPDIR}"/set_user_permissions.sh "${HOME}"
|
||||
|
||||
### usually you want to swich back to a non-root user
|
||||
### alternatively you can do it in a compose file (see 'example.yml')
|
||||
USER 1000
|
||||
|
||||
@@ -54,8 +54,8 @@ export DOCKER_BUILDKIT=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_NOVNC=0
|
||||
# # export FEATURES_FIREFOX_PLUS=0
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -86,9 +86,9 @@ export DOCKER_BUILDKIT=1
|
||||
# export FORCE_BUILDING=0
|
||||
# ### 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
|
||||
# ### explicitly disable features that are enabled by default
|
||||
# # export FEATURES_NOVNC=0
|
||||
# # export FEATURES_FIREFOX_PLUS=0
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
+74
-8
@@ -2,7 +2,10 @@
|
||||
|
||||
- [Utility `builder.sh`](#utility-buildersh)
|
||||
- [Introduction](#introduction)
|
||||
- [Prerequisites](#prerequisites)
|
||||
- [Preparation](#preparation)
|
||||
- [Ensure file attributes after cloning](#ensure-file-attributes-after-cloning)
|
||||
- [Set environment variables before building](#set-environment-variables-before-building)
|
||||
- [Ensure `wget` utility](#ensure-wget-utility)
|
||||
- [Executing complete pipeline](#executing-complete-pipeline)
|
||||
- [Executing individual pipeline steps](#executing-individual-pipeline-steps)
|
||||
- [What about the 'cache' helper script](#what-about-the-cache-helper-script)
|
||||
@@ -38,22 +41,85 @@ The script creates a complete execution log.
|
||||
|
||||
The `<docker-cli-options>` are passed to the Docker CLI commands used internally depending on the usage mode (see below).
|
||||
|
||||
## Prerequisites
|
||||
## Preparation
|
||||
|
||||
Before building and publishing the images prepare and source a file containing the necessary environment variables. You can use the provided file `example-secrets.rc` as a template.
|
||||
### Ensure file attributes after cloning
|
||||
|
||||
If you name your file `secrets.rc` and you store it into the folder `docker/hooks/`, then it will sourced automatically by the hook script `env.rc`.
|
||||
It may be necessary to repair the executable files attributes after cloning the repository (by `git clone`).
|
||||
|
||||
Otherwise you can source it in the terminal manually, for example:
|
||||
You can do that by executing the following commands from the project's root directory:
|
||||
|
||||
```shell
|
||||
source secrets.rc
|
||||
find . -type f -name "*.sh" -exec chmod +x '{}' \;
|
||||
chmod +x docker/hooks/*
|
||||
```
|
||||
|
||||
For example, if the files in the folder `docker/hooks` would not be executable, then you would get errors similar to this:
|
||||
|
||||
```shell
|
||||
$ ./builder.sh latest build
|
||||
|
||||
==> EXECUTING @2023-03-05_16-42-57: ./builder.sh
|
||||
|
||||
./builder.sh: line 84: ./docker/hooks/build: Permission denied
|
||||
```
|
||||
|
||||
### Set environment variables before building
|
||||
|
||||
Open a terminal windows and change the current directory to the root of the project (where the license file is).
|
||||
|
||||
Make a copy of the secrets example file, modify it and then source it in the terminal:
|
||||
|
||||
```shell
|
||||
### make a copy and then modify it
|
||||
cp examples/example-secrets.rc secrets.rc
|
||||
|
||||
### source the secrets
|
||||
source ./secrets.rc
|
||||
|
||||
### or also
|
||||
|
||||
. secrets.rc
|
||||
. ./secrets.rc
|
||||
```
|
||||
|
||||
**TIP**: If you copy a file named `secrets.rc` into the folder `docker/hooks/`, then it will be automatically sourced by the hook script `env.rc`.
|
||||
|
||||
Be aware that the following environment variables are mandatory and must be always set:
|
||||
|
||||
- `REPO_OWNER_NAME`
|
||||
- `BUILDER_REPO`
|
||||
|
||||
Ensure that your `secrets.rc` file contains at least the lines similar to these:
|
||||
|
||||
```shell
|
||||
export REPO_OWNER_NAME="accetto"
|
||||
export BUILDER_REPO="headless-debian-g3"
|
||||
```
|
||||
|
||||
You can use your own names if you wish.
|
||||
|
||||
Alternatively you can modify the hook script file env.rc like this:
|
||||
|
||||
```shell
|
||||
### original lines
|
||||
declare _owner="${REPO_OWNER_NAME:?Need repo owner name}"
|
||||
DOCKER_REPO="${_owner}/${BUILDER_REPO:?Need builder repo name}"
|
||||
|
||||
### modified lines
|
||||
declare _owner="${REPO_OWNER_NAME:-accetto}"
|
||||
DOCKER_REPO="${_owner}/${BUILDER_REPO:-headless-debian-g3}"
|
||||
```
|
||||
|
||||
Again, you can use your own names if you wish.
|
||||
|
||||
You can also use other ways to set the variables.
|
||||
|
||||
### Ensure `wget` utility
|
||||
|
||||
If you are on Windows, you can encounter the problem of missing `wget` utility. It is used by refreshing the `g3-cache` and it's available on Linux by default.
|
||||
|
||||
On Windows you have generally two choices. You can build your images inside the `WSL` environment or you can download the `wget.exe` application for Windows. Make sure to update also the `PATH` environment variable appropriately.
|
||||
|
||||
## Executing complete pipeline
|
||||
|
||||
Building the individual images and publishing them to the **Docker Hub**:
|
||||
@@ -86,7 +152,7 @@ You can also provide additional parameters for the internally used Docker `build
|
||||
### docker build --no-cache ...
|
||||
```
|
||||
|
||||
The optional `<docker-cli-options>` are passed only to the `pre_build` hook script, which passes them to the internally used `docker build` command.
|
||||
The optional `<docker-cli-options>` are passed only to the `pre_build` hook script, which passes them to the internally used `docker build` command. The `cache` hook script, however, doesn't use any Docker CLI commands.
|
||||
|
||||
## Executing individual pipeline steps
|
||||
|
||||
|
||||
+80
-12
@@ -2,7 +2,10 @@
|
||||
|
||||
- [Utility `ci-builder.sh`](#utility-ci-buildersh)
|
||||
- [Introduction](#introduction)
|
||||
- [Prerequisites](#prerequisites)
|
||||
- [Preparation](#preparation)
|
||||
- [Ensure file attributes after cloning](#ensure-file-attributes-after-cloning)
|
||||
- [Set environment variables before building](#set-environment-variables-before-building)
|
||||
- [Ensure `wget` utility](#ensure-wget-utility)
|
||||
- [Usage modes](#usage-modes)
|
||||
- [Group mode](#group-mode)
|
||||
- [Group mode examples](#group-mode-examples)
|
||||
@@ -10,7 +13,7 @@
|
||||
- [Family mode examples](#family-mode-examples)
|
||||
- [Log processing](#log-processing)
|
||||
- [Digest command](#digest-command)
|
||||
- [Stickers commands](#stickers-commands)
|
||||
- [Stickers command](#stickers-command)
|
||||
- [Timing command](#timing-command)
|
||||
- [Errors command](#errors-command)
|
||||
- [Additional building parameters](#additional-building-parameters)
|
||||
@@ -69,22 +72,85 @@ The optional parameter `--no-cache` will be passed to the internally used script
|
||||
|
||||
The optional parameter `--log-all` will cause that the script's output will be written into the log file in all cases. Normally the command line errors or the **log processing mode** commands are not logged.
|
||||
|
||||
## Prerequisites
|
||||
## Preparation
|
||||
|
||||
Before building and publishing the images prepare and source a file containing the necessary environment variables. You can use the provided file `example-secrets.rc` as a template.
|
||||
### Ensure file attributes after cloning
|
||||
|
||||
If you name your file `secrets.rc` and you store it into the folder `docker/hooks/`, then it will sourced automatically by the hook script `env.rc`.
|
||||
It may be necessary to repair the executable files attributes after cloning the repository (by `git clone`).
|
||||
|
||||
Otherwise you can source it in the terminal manually, for example:
|
||||
You can do that by executing the following commands from the project's root directory:
|
||||
|
||||
```shell
|
||||
source secrets.rc
|
||||
find . -type f -name "*.sh" -exec chmod +x '{}' \;
|
||||
chmod +x docker/hooks/*
|
||||
```
|
||||
|
||||
For example, if the files in the folder `docker/hooks` would not be executable, then you would get errors similar to this:
|
||||
|
||||
```shell
|
||||
$ ./builder.sh latest build
|
||||
|
||||
==> EXECUTING @2023-03-05_16-42-57: ./builder.sh
|
||||
|
||||
./builder.sh: line 84: ./docker/hooks/build: Permission denied
|
||||
```
|
||||
|
||||
### Set environment variables before building
|
||||
|
||||
Open a terminal windows and change the current directory to the root of the project (where the license file is).
|
||||
|
||||
Make a copy of the secrets example file, modify it and then source it in the terminal:
|
||||
|
||||
```shell
|
||||
### make a copy and then modify it
|
||||
cp examples/example-secrets.rc secrets.rc
|
||||
|
||||
### source the secrets
|
||||
source ./secrets.rc
|
||||
|
||||
### or also
|
||||
|
||||
. secrets.rc
|
||||
. ./secrets.rc
|
||||
```
|
||||
|
||||
**TIP**: If you copy a file named `secrets.rc` into the folder `docker/hooks/`, then it will be automatically sourced by the hook script `env.rc`.
|
||||
|
||||
Be aware that the following environment variables are mandatory and must be always set:
|
||||
|
||||
- `REPO_OWNER_NAME`
|
||||
- `BUILDER_REPO`
|
||||
|
||||
Ensure that your `secrets.rc` file contains at least the lines similar to these:
|
||||
|
||||
```shell
|
||||
export REPO_OWNER_NAME="accetto"
|
||||
export BUILDER_REPO="headless-debian-g3"
|
||||
```
|
||||
|
||||
You can use your own names if you wish.
|
||||
|
||||
Alternatively you can modify the hook script file env.rc like this:
|
||||
|
||||
```shell
|
||||
### original lines
|
||||
declare _owner="${REPO_OWNER_NAME:?Need repo owner name}"
|
||||
DOCKER_REPO="${_owner}/${BUILDER_REPO:?Need builder repo name}"
|
||||
|
||||
### modified lines
|
||||
declare _owner="${REPO_OWNER_NAME:-accetto}"
|
||||
DOCKER_REPO="${_owner}/${BUILDER_REPO:-headless-debian-g3}"
|
||||
```
|
||||
|
||||
Again, you can use your own names if you wish.
|
||||
|
||||
You can also use other ways to set the variables.
|
||||
|
||||
### Ensure `wget` utility
|
||||
|
||||
If you are on Windows, you can encounter the problem of missing `wget` utility. It is used by refreshing the `g3-cache` and it's available on Linux by default.
|
||||
|
||||
On Windows you have generally two choices. You can build your images inside the `WSL` environment or you can download the `wget.exe` application for Windows. Make sure to update also the `PATH` environment variable appropriately.
|
||||
|
||||
## Usage modes
|
||||
|
||||
### Group mode
|
||||
@@ -131,11 +197,13 @@ The dependency in this context is meant more technically than conceptually.
|
||||
|
||||
The following example will help to understand the concept.
|
||||
|
||||
The image `accetto/ubuntu-vnc-xfce-g3:latest-fugo` added some additional features to the image `accetto/ubuntu-vnc-xfce-g3:latest`, but otherwise were both images identical.
|
||||
This project currently does not include any images that are in such a relation. Therefore it will be explained using the images from the sibling project [accetto/ubuntu-vnc-xfce-g3][accetto-github-ubuntu-vnc-xfce-g3].
|
||||
|
||||
In such case a conclusion can be made, that if the `latest` tag does not need a refresh, then also the `latest-fugo` tag doesn't need it and it can be skipped.
|
||||
The image `accetto/ubuntu-vnc-xfce-firefox-g3:latest-plus` added some additional features to the image `accetto/ubuntu-vnc-xfce-firefox-g3:latest`, but otherwise were both images identical.
|
||||
|
||||
There had been a similar dependency between the images `accetto/ubuntu-vnc-xfce-firefox-g3:latest-plus` and `accetto/ubuntu-vnc-xfce-firefox-g3:latest`.
|
||||
In such case a conclusion can be made, that if the `latest` tag does not need a refresh, then also the `latest-plus` tag doesn't need it and its building can be skipped.
|
||||
|
||||
There had been a similar dependency between the images `accetto/ubuntu-vnc-xfce-g3:latest` and `accetto/ubuntu-vnc-xfce-g3:latest-fugo`.
|
||||
|
||||
This kind of family-like relation allows to refresh the images more efficiently by skipping the "children" if the "parent" doesn't need a re-build.
|
||||
|
||||
@@ -203,7 +271,7 @@ Built new 'headless-debian-g3:latest-chromium'.
|
||||
Built new 'headless-debian-g3:latest-firefox'.
|
||||
```
|
||||
|
||||
#### Stickers commands
|
||||
#### Stickers command
|
||||
|
||||
The `stickers` command extracts the information about the **version stickers** of the ephemeral helper images that have been built by the `pre_build` hook script. That does not mean that the final persistent images have also been built (and optionally also published).
|
||||
|
||||
|
||||
+8
-1
@@ -2,6 +2,7 @@
|
||||
|
||||
- [Custom `g3-cache`](#custom-g3-cache)
|
||||
- [Introduction](#introduction)
|
||||
- [Ensure `wget` utility](#ensure-wget-utility)
|
||||
- [Local `g3-cache`](#local-g3-cache)
|
||||
- [Shared g3-cache](#shared-g3-cache)
|
||||
- [Helper script `cache`](#helper-script-cache)
|
||||
@@ -12,12 +13,18 @@ The custom `g3-cache` has been introduced in the **second version** (G3v2) of th
|
||||
|
||||
The local `g3-cache` is an additional cache used by the building pipeline and it should not be confused with the **Docker builder cache** maintained by the [Docker Build][docker-doc-docker-build] itself.
|
||||
|
||||
The `g3-cache`stores the selected pre-downloaded packages used by the Dockerfiles, that would be otherwise repeatedly downloaded from the external sources by each build.
|
||||
The `g3-cache` stores the selected pre-downloaded packages used by the Dockerfiles, that would be otherwise repeatedly downloaded from the external sources by each build.
|
||||
|
||||
It results in a significantly higher performance by building sets of images or by repeated builds.
|
||||
|
||||
You can learn more about the concept on the sibling Wiki page ["Concepts of `g3-cache`"][sibling-wiki-concepts-of-g3-cache] and about the implementation on the sibling Wiki page ["How `g3-cache` works"][sibling-wiki-how-g3-cache-works].
|
||||
|
||||
### Ensure `wget` utility
|
||||
|
||||
If you are on Windows, you can encounter the problem of missing `wget` utility. It is used by refreshing the `g3-cache` and it's available on Linux by default.
|
||||
|
||||
On Windows you have generally two choices. You can build your images inside the `WSL` environment or you can download the `wget.exe` application for Windows. Make sure to update also the `PATH` environment variable appropriately.
|
||||
|
||||
## Local `g3-cache`
|
||||
|
||||
The local `g3-cache` of this project has the following **cache sections**:
|
||||
|
||||
@@ -3,6 +3,9 @@
|
||||
- [Local building example](#local-building-example)
|
||||
- [Introduction](#introduction)
|
||||
- [Preparation](#preparation)
|
||||
- [Ensure file attributes after cloning](#ensure-file-attributes-after-cloning)
|
||||
- [Set environment variables before building](#set-environment-variables-before-building)
|
||||
- [Ensure `wget` utility](#ensure-wget-utility)
|
||||
- [Building pipeline](#building-pipeline)
|
||||
- [Three ways of building images](#three-ways-of-building-images)
|
||||
- [Building and publishing sets of images](#building-and-publishing-sets-of-images)
|
||||
@@ -25,15 +28,38 @@ The **Docker Hub** has removed the **auto-building feature** from the free plan
|
||||
|
||||
This page describes how to build the images locally and optionally also push them to the **Docker Hub**.
|
||||
|
||||
The **second version** (G3v2) of the building pipeline in the sibling project [accetto/ubuntu-vnc-xfce-g3][accetto-github-ubuntu-vnc-xfce-g3] made it really easy, even if you want to build a set of images or all of them at once.
|
||||
The **second version** (G3v2) of the building pipeline introduced in the sibling project [accetto/ubuntu-vnc-xfce-g3][accetto-github-ubuntu-vnc-xfce-g3] made it really easy, even if you want to build a set of images or all of them at once.
|
||||
|
||||
## Preparation
|
||||
|
||||
### Ensure file attributes after cloning
|
||||
|
||||
It may be necessary to repair the executable files attributes after cloning the repository (by `git clone`).
|
||||
|
||||
You can do that by executing the following commands from the project's root directory:
|
||||
|
||||
```shell
|
||||
find . -type f -name "*.sh" -exec chmod +x '{}' \;
|
||||
chmod +x docker/hooks/*
|
||||
```
|
||||
|
||||
For example, if the files in the folder `docker/hooks` would not be executable, then you would get errors similar to this:
|
||||
|
||||
```shell
|
||||
$ ./builder.sh latest build
|
||||
|
||||
==> EXECUTING @2023-03-05_16-42-57: ./builder.sh
|
||||
|
||||
./builder.sh: line 84: ./docker/hooks/build: Permission denied
|
||||
```
|
||||
|
||||
### Set environment variables before building
|
||||
|
||||
Open a terminal windows and change the current directory to the root of the project (where the license file is).
|
||||
|
||||
Make a copy of the secrets example file, modify it and then source it in the terminal:
|
||||
|
||||
```bash
|
||||
```shell
|
||||
### make a copy and then modify it
|
||||
cp examples/example-secrets.rc secrets.rc
|
||||
|
||||
@@ -47,6 +73,42 @@ source ./secrets.rc
|
||||
|
||||
**TIP**: If you copy a file named `secrets.rc` into the folder `docker/hooks/`, then it will be automatically sourced by the hook script `env.rc`.
|
||||
|
||||
Be aware that the following environment variables are mandatory and must be always set:
|
||||
|
||||
- `REPO_OWNER_NAME`
|
||||
- `BUILDER_REPO`
|
||||
|
||||
Ensure that your `secrets.rc` file contains at least the lines similar to these:
|
||||
|
||||
```shell
|
||||
export REPO_OWNER_NAME="accetto"
|
||||
export BUILDER_REPO="headless-debian-g3"
|
||||
```
|
||||
|
||||
You can use your own names if you wish.
|
||||
|
||||
Alternatively you can modify the hook script file env.rc like this:
|
||||
|
||||
```shell
|
||||
### original lines
|
||||
declare _owner="${REPO_OWNER_NAME:?Need repo owner name}"
|
||||
DOCKER_REPO="${_owner}/${BUILDER_REPO:?Need builder repo name}"
|
||||
|
||||
### modified lines
|
||||
declare _owner="${REPO_OWNER_NAME:-accetto}"
|
||||
DOCKER_REPO="${_owner}/${BUILDER_REPO:-headless-debian-g3}"
|
||||
```
|
||||
|
||||
Again, you can use your own names if you wish.
|
||||
|
||||
You can also use other ways to set the variables.
|
||||
|
||||
### Ensure `wget` utility
|
||||
|
||||
If you are on Windows, you can encounter the problem of missing `wget` utility. It is used by refreshing the `g3-cache` and it's available on Linux by default.
|
||||
|
||||
On Windows you have generally two choices. You can build your images inside the `WSL` environment or you can download the `wget.exe` application for Windows. Make sure to update also the `PATH` environment variable appropriately.
|
||||
|
||||
## Building pipeline
|
||||
|
||||
The actual building pipeline consists of the following hook scripts stored in the folder `docker/hooks`:
|
||||
@@ -58,7 +120,7 @@ The actual building pipeline consists of the following hook scripts stored in th
|
||||
|
||||
The hook scripts are executed exactly in that order.
|
||||
|
||||
The **second version** (G3v2) of the pipeline in the sibling project [accetto/ubuntu-vnc-xfce-g3][accetto-github-ubuntu-vnc-xfce-g3] has added also the helper script `cache`, which ist stored in the same folder. It is used by the hook scripts `pre_build` and `build` and it refreshes the local `g3-cache`. It can be also executed stand-alone.
|
||||
The **second version** (G3v2) of the pipeline introduced in the sibling project [accetto/ubuntu-vnc-xfce-g3][accetto-github-ubuntu-vnc-xfce-g3] has added also the helper script `cache`, which ist stored in the same folder. It is used by the hook scripts `pre_build` and `build` and it refreshes the local `g3-cache`. It can be also executed stand-alone.
|
||||
|
||||
Utilizing the local `g3-cache` brings a significant boost in the building performance and much shorter building times.
|
||||
|
||||
@@ -66,7 +128,7 @@ There is also the helper script `util-readme.sh`, stored in the folder `utils/`.
|
||||
|
||||
## Three ways of building images
|
||||
|
||||
Since the **second version** (G3v2) of the building pipeline in the sibling project [accetto/ubuntu-vnc-xfce-g3][accetto-github-ubuntu-vnc-xfce-g3] there are the following ways of building the images:
|
||||
Since the **second version** (G3v2) of the building pipeline introduced in the sibling project [accetto/ubuntu-vnc-xfce-g3][accetto-github-ubuntu-vnc-xfce-g3] there are the following ways of building the images:
|
||||
|
||||
- Building sets of images by executing the helper script `ci-builder.sh`
|
||||
- Building the individual images by executing the helper script `builder.sh`
|
||||
@@ -204,7 +266,7 @@ Both scripts insert the additional parameters just after the `docker build` part
|
||||
For example, if the additional parameters `--target stage_xfce --no-cache` are provided to the script `docker/hooks/build`, then the result Docker command line will begin like this:
|
||||
|
||||
```shell
|
||||
docker build --target stage_xfce --no-cache -f ./docker/Dockerfile.xfce.22-04 ...
|
||||
docker build --target stage_xfce --no-cache -f ./docker/Dockerfile.xfce ...
|
||||
```
|
||||
|
||||
However, there is a special handling of the parameter `--target`.
|
||||
@@ -248,7 +310,7 @@ It allows to build even smaller images by excluding `noVNC` or `Firefox Plus fea
|
||||
If the environment variable `FEATURES_NOVNC` is explicitly set to zero (by `export 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.)
|
||||
- image tag will get the `-vnc` suffix (e.g. `latest-vnc`, `latest-firefox-vnc` etc.)
|
||||
|
||||
### Disabling `Firefox Plus`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user