Sign in Join
Wiki copytemporary

Official Docker Images

Introduction

In the last years the use of containerization, often with Docker - the world's leading software container platform 1, has grown rapidly due to the high usage of Continuous Integration / Continuous Delivery (short: CI/CD) in the development process. There are multiple repositories on DockerHub that pretend to provide Docker files and images for FPC but none of them is 'official' and it's also unsure if they are still maintained. Often they also only provide images for a single architecture.

To ease the local development within containers and the use of CI/CD with FPC - also on different architectures - the FPC team provides official Docker containers on DockerHub and GitLab.

Docker

A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings. Container images become containers at runtime. Containers isolate software from its environment and ensure that it works uniformly despite differences for instance between development and staging.

Docker containers run on Windows, Linux, macOS and cloud service providers like Amazon Web Services and Microsoft Azure.

Applications that traditionally run as Unix daemons or Windows services, such as web servers and databases, increasingly run containerized.

For more information and the difference between virtual machines and containers, see What is a Container? | App Containerization | Docker

Alpine Linux

Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and BusyBox. The image is only 5 MB in size and has access to a package repository that is much more complete than other BusyBox based images. 2

Debian

Debian is a Linux operating system and one of the most popular Linux distributions for personal computers and network servers. It has been used as a base for several other Linux distributions. 3

Ubuntu

Ubuntu is a Debian-based Linux operating system that runs from the desktop to the cloud. It is the world's most popular operating system across public clouds and OpenStack clouds. It is the number one platform for containers; from Docker to Kubernetes to LXD, Ubuntu can run your containers at scale. Fast, secure and simple, Ubuntu powers millions of PCs worldwide. 4

Design considerations

TODO (help needed!)

GitLab CI

The .gitlab-ci.yml file checks if a Dockerfile exists to prevent jobs from running if no Dockerfile is provided for this distribution. The script uses the branch name to distinguish between different build flavors and create tags based on that. Therefore it is assumed that the default branch (=nightly) is used for nightly builds and versioned branch names are for dedicated FPC versions (regex for semantic versioning).

For Debian versions bumps (e.g. buster to bullseye) the DEBIAN_VERSION inside the .gitlab-ci.yml file needs to be changed and not only the version argument ARG DEBIAN_VERSION=buster of the Dockerfile, otherwise the pull tags will be broken.

For Ubuntu versions bumps (e.g. focal to jammy) the UBUNTU_VERSION inside the .gitlab-ci.yml file needs to be changed and not only the version argument ARG UBUNTU_VERSION=focal of the Dockerfile, otherwise the pull tags will be broken.

Further Reading

See Also


From the Free Pascal wiki, page "Official Docker Images", as it stood on 2023-07-22 after a change by Bi0T1N, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 1, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.