|
1 | | -# Rsyslog Docker Images |
| 1 | +# ⚠️ IMPORTANT: Documentation Has Moved\! ⚠️ |
2 | 2 |
|
3 | | -This repository contains the Dockerfiles and build configurations for creating official Docker images for rsyslog. Our goal is to provide robust, flexible, and easy-to-use containerized rsyslog solutions for various logging needs. |
| 3 | +----- |
4 | 4 |
|
5 | | -See also the [rsyslog project board for Docker tasks](https://github.com/rsyslog/rsyslog/projects/5). |
| 5 | +**This repository's content has been fully integrated into the main `rsyslog/rsyslog` project.** |
6 | 6 |
|
7 | | ---- |
8 | | -## User-Focused Docker Images (Ubuntu Based) |
| 7 | +All rsyslog documentation is now located in the `packaging/docler/` subdirectory of the main repository. |
9 | 8 |
|
10 | | -We provide a set of user-focused Docker images based on **Ubuntu LTS**, utilizing the Adiscon PPA for the latest stable rsyslog versions. These images are designed with a layered approach and offer runtime configurability. |
| 9 | +----- |
11 | 10 |
|
12 | | -**Current Development Status & Feedback:** |
13 | | -*Please note that this new set of user-facing containers is currently under active development and improvement. While they are intended to be stable and safe for use, rapid changes and enhancements are expected during this phase. We highly appreciate user feedback! If you encounter any issues or have suggestions, please open an issue on our GitHub repository: [https://github.com/rsyslog/rsyslog-docker/issues](https://github.com/rsyslog/rsyslog-docker/issues).* |
| 11 | +### **➡️ Find the docker support here: [https://github.com/rsyslog/rsyslog](https://github.com/rsyslog/rsyslog)** |
14 | 12 |
|
15 | | -### Naming Convention & Tagging |
| 13 | +----- |
16 | 14 |
|
17 | | -Our user-focused images follow this naming and tagging scheme: |
| 15 | +## Why the Change? |
18 | 16 |
|
19 | | -* **Standard Image:** `rsyslog/rsyslog:<version>` |
20 | | - * Example: `rsyslog/rsyslog:2025-04` |
21 | | - * The `:latest` tag for `rsyslog/rsyslog` will point to the most recent build of this standard image. |
22 | | -* **Functional Variant Images:** `rsyslog/rsyslog-<function>:<version>` |
23 | | - * Example: `rsyslog/rsyslog-minimal:2025-04` |
24 | | - * Example: `rsyslog/rsyslog-collector:2025-04` |
25 | | - * Each functional variant repository (e.g., `rsyslog/rsyslog-minimal`) will also have its own `:latest` tag pointing to its most recent build. |
| 17 | +This repository (`rsyslog-docker`) previously held the official docker definitions. We've merged it into the primary `rsyslog` codebase to greatly simplify maintenance, boost discoverability for users and tools, and streamline our development processes. |
26 | 18 |
|
27 | | -The `<version>` tag corresponds to the rsyslog version, which follows a `YYYY-MM` scheme and is released bi-monthly (e.g., "2025-04" denotes the rsyslog version released in April 2025). |
| 19 | +This move brings several key benefits: |
28 | 20 |
|
29 | | -### Available Image Variants |
| 21 | + * **Simplified Maintenance:** You can now make docker def changes alongside code changes in a single pull request, ensuring everything stays in sync. |
| 22 | + * **Improved Discoverability:** The docker files are now right where most users look first – within the main project repository. |
| 23 | + * **Streamlined CI/CD:** Integrating the docker files simplifies our continuous integration and deployment pipelines. |
| 24 | + * **Better Cross-Referencing:** It's much easier to link directly between code and its relevant docker files. |
30 | 25 |
|
31 | | -1. **`rsyslog/rsyslog:<version>` (Standard Image)** |
32 | | - * **Base:** Builds upon the `minimal` image. |
33 | | - * **Contents:** Includes the rsyslog core plus a curated set of commonly used modules (e.g., `imhttp` for health checks/metrics, `omhttp`). This image is intended as the default, general-purpose choice for most users. |
34 | | - * **Purpose:** Suitable for a wide range of logging tasks, offering a good balance of features and footprint. |
| 26 | +## What Happened to This Repository? |
35 | 27 |
|
36 | | -2. **`rsyslog/rsyslog-minimal:<version>` (Minimal Image)** |
37 | | - * **Base:** Leanest Ubuntu LTS. |
38 | | - * **Contents:** Rsyslog core binaries and essential runtime files only. No optional modules are included by default. |
39 | | - * **Purpose:** For users requiring absolute control over installed components, wishing to build highly specialized custom images, or operating in extremely resource-constrained environments. |
| 28 | +This `rsyslog-docker` repository will remain as an **archive only**. No new documentation updates will be made here. All future docker contributions and updates should **exclusively target the `packaging/docker/` directory in the main `rsyslog/rsyslog` repository.** |
40 | 29 |
|
41 | | -3. **`rsyslog/rsyslog-collector:<version>` (Collector Image)** |
42 | | - * **Base:** Builds upon the `standard` image. |
43 | | - * **Contents:** Includes modules typically needed for a log collector/aggregator role, such as `rsyslog-elasticsearch`, `rsyslog-omkafka`, `rsyslog-relp`, and common input modules (TCP, UDP, RELP). |
44 | | - * **Purpose:** Optimized for centralized log ingestion and forwarding to various storage or analysis backends. |
45 | | - |
46 | | -4. **`rsyslog/rsyslog-dockerlogs:<version>` (Docker Logs Image)** |
47 | | - * **Base:** Builds upon the `standard` image. |
48 | | - * **Contents:** Includes `rsyslog-imdocker` and configurations tailored for collecting logs from the Docker daemon and containers. |
49 | | - * **Purpose:** Specialized for environments where rsyslog is used to gather and process logs originating from Docker. |
50 | | - |
51 | | -5. **`rsyslog/rsyslog-debug:<version>` (Debug Image - Planned)** |
52 | | - * **Base:** Builds upon the `standard` image. |
53 | | - * **Contents:** Includes debugging tools and potentially rsyslog compiled with extra debug symbols. |
54 | | - * **Purpose:** For troubleshooting and development purposes. |
55 | | - |
56 | | -*(Note: Specific modules included in `standard`, `collector`, and other variants might evolve. Refer to the individual Dockerfiles for the most up-to-date package lists.)* |
57 | | - |
58 | | -### Runtime Configuration |
59 | | - |
60 | | -Many features and modules within these images (especially `standard` and above) can be enabled or disabled at runtime using environment variables in conjunction with rsyslog's `config.enable=\`cat $ENVVAR\`` directive in the rsyslog configuration. This allows for flexible deployments without needing a custom image for every minor configuration change. |
61 | | - |
62 | | ---- |
63 | | -## Building the Images |
64 | | - |
65 | | -The `Makefile` in the /rsyslog path of this repository is used to build these Docker images. |
66 | | - |
67 | | -* To build all defined user-focused images (minimal, standard, collector, dockerlogs): |
68 | | - ```bash |
69 | | - make all |
70 | | - ``` |
71 | | -* To build a specific image variant: |
72 | | - ```bash |
73 | | - make standard |
74 | | - make minimal |
75 | | - make collector |
76 | | - make dockerlogs |
77 | | - ``` |
78 | | -* The rsyslog version for the image tags can be overridden: |
79 | | - ```bash |
80 | | - make VERSION=your-custom-version-tag all |
81 | | - ``` |
82 | | - By default, it uses the version specified in the `Makefile`. |
83 | | -* To force a rebuild without using Docker cache: |
84 | | - ```bash |
85 | | - make REBUILD=yes all |
86 | | - ``` |
87 | | - |
88 | | ---- |
89 | | -## Development and CI Images |
90 | | - |
91 | | -* `/dev_env` - This directory contains Docker images used as build environments for rsyslog Continuous Integration (CI) testing. They contain every dependency required for building and testing rsyslog and are consequently several gigabytes in size. These images are meant for rsyslog contributors and developers, not for general public use as runtime containers. |
92 | | - |
93 | | ---- |
94 | | -## Historical Information (For Reference Only) |
95 | | - |
96 | | -The following sections describe previous efforts and image bases that are **no longer maintained or produced**. They are kept for historical reference. |
97 | | - |
98 | | -### Discontinued Appliance Experiment |
99 | | -* `/appliance` - This directory represents an early experiment at creating an all-in-one rsyslog logging appliance. This approach did not align with current containerization best practices and was discontinued. The images are outdated and should not be used. |
100 | | - |
101 | | -### Legacy Base Images |
102 | | -* Legacy Alpine and CentOS base images previously existed in a `/base` directory. These are no longer maintained. Development now focuses exclusively on Ubuntu-based images, which integrate best with our daily stable package builds. |
103 | | - |
104 | | -### CentOS Notes (Historical) |
105 | | -* Older CentOS 7 definitions can be found under `/base/centos7`. Like the Alpine files, these are no longer maintained but remain for reference. |
106 | | - |
107 | | -### Historical: Alpine Linux Build Process |
108 | | -The following notes describe the original Alpine Linux based build process. These images are **no longer built or supported**. |
109 | | - |
110 | | -We initially intended to use Alpine Linux for its small size and security profile. However, Alpine often missed components required by rsyslog, necessitating that we build and maintain custom packages. This became an ongoing effort as rsyslog versions advanced. |
111 | | - |
112 | | -* For those interested, the old custom packaging repository is still available at: |
113 | | - [https://github.com/rgerhards/alpine-rsyslog-extras](https://github.com/rgerhards/alpine-rsyslog-extras). |
114 | | - |
115 | | -* **Package Build Environment (Historical Alpine):** |
116 | | - We used a modified version of `docker-alpine-abuild` for building custom Alpine packages: |
117 | | - [https://github.com/rgerhards/docker-alpine-abuild/tree/master-rger](https://github.com/rgerhards/docker-alpine-abuild/tree/master-rger) |
118 | | - This was based on `andyshinn/docker-alpine-abuild` with rsyslog-specific tweaks, including our own unofficial APK repository for newer dependencies. |
119 | | - |
120 | | -* **Bootstrap (Historical Alpine):** |
121 | | - *(Note: "usr" below refers to a user-specific prefix used during the old build process.)* |
122 | | - The process to bootstrap the Alpine package building from scratch involved: |
123 | | - 1. Creating a `usr/docker-alpine-abuild` image, initially *without* our custom repository. |
124 | | - 2. Building an `autotools-archive` package via `usr/alpine-linux-extras`. |
125 | | - 3. Copying this package to a custom HTTP server (our APK repository). |
126 | | - 4. Rebuilding `usr/docker-alpine-abuild` image, this time *with* the custom repository enabled to use the newly built dependencies. |
127 | | - 5. Building the rest of the custom packages in `usr/alpine-linux-extras`, with rsyslog generally being built last. This often required multiple uploads to the custom repository as dependencies were met. |
128 | | - |
129 | | ---- |
130 | | -## Important Note |
131 | | -**Remember to periodically update your Docker images to include the latest (security) updates from the base OS and rsyslog itself!** Always prefer using specific version tags for production deployments rather than `:latest` to ensure stability. |
0 commit comments