forked from wazuh/wazuh-docker
Change image build process
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
WAZUH_VERSION=5.0.0
|
||||
WAZUH_IMAGE_VERSION=5.0.0
|
||||
WAZUH_REGISTRY=docker.io
|
||||
IMAGE_TAG=5.0.0
|
||||
|
||||
@@ -166,52 +166,23 @@ build() {
|
||||
fi
|
||||
|
||||
|
||||
# Function to get component-specific commit reference
|
||||
get_component_commit() {
|
||||
local component=$1
|
||||
case "${component}" in
|
||||
wazuh-indexer)
|
||||
echo "${INDEXER_COMMIT}"
|
||||
;;
|
||||
wazuh-manager)
|
||||
echo "${MANAGER_COMMIT}"
|
||||
;;
|
||||
wazuh-dashboard)
|
||||
echo "${DASHBOARD_COMMIT}"
|
||||
;;
|
||||
wazuh-agent)
|
||||
echo "${AGENT_COMMIT}"
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Global env file (without IMAGE_TAG - will be component-specific)
|
||||
# Write the global .env file used by deployment compose files.
|
||||
# IMAGE_TAG here reflects a non-dev, non-per-component tag for reference.
|
||||
local base_tag="${WAZUH_IMAGE_VERSION}${WAZUH_DEV_STAGE:+-${WAZUH_DEV_STAGE,,}}"
|
||||
echo WAZUH_VERSION=$WAZUH_IMAGE_VERSION > ../.env
|
||||
echo WAZUH_IMAGE_VERSION=$WAZUH_IMAGE_VERSION >> ../.env
|
||||
echo WAZUH_REGISTRY=$WAZUH_REGISTRY >> ../.env
|
||||
echo IMAGE_TAG=${base_tag} >> ../.env
|
||||
|
||||
set -a
|
||||
source ../.env
|
||||
source ./artifacts_env.txt
|
||||
set +a
|
||||
|
||||
# Define all available components
|
||||
local all_components=("wazuh-indexer" "wazuh-manager" "wazuh-dashboard" "wazuh-agent")
|
||||
local components_to_build=()
|
||||
|
||||
# Determine which components to build
|
||||
if [ -z "${WAZUH_COMPONENT}" ]; then
|
||||
echo "No component specified. Building all components..."
|
||||
components_to_build=("${all_components[@]}")
|
||||
else
|
||||
# Validate component
|
||||
# Validate component if a specific one was requested.
|
||||
if [ -n "${WAZUH_COMPONENT}" ]; then
|
||||
case "${WAZUH_COMPONENT}" in
|
||||
wazuh-indexer|wazuh-manager|wazuh-dashboard|wazuh-agent)
|
||||
components_to_build=("${WAZUH_COMPONENT}")
|
||||
;;
|
||||
wazuh-indexer|wazuh-manager|wazuh-dashboard|wazuh-agent) ;;
|
||||
*)
|
||||
echo "Error: Unknown component '${WAZUH_COMPONENT}'" >&2
|
||||
clean 1
|
||||
@@ -219,77 +190,50 @@ build() {
|
||||
esac
|
||||
fi
|
||||
|
||||
# Determine build command and base options
|
||||
# Generate per-component image tags.
|
||||
# The commit suffix is only appended when --dev is passed. This ensures:
|
||||
# dev=false, tag=5.0.0 → 5.0.0
|
||||
# dev=false, tag=5.0.0-beta1 → 5.0.0-beta1
|
||||
# dev=true, tag=5.0.0 → 5.0.0-latest
|
||||
# dev=true, tag=5.0.0-beta1 → 5.0.0-beta1-latest
|
||||
make_tag() {
|
||||
local commit=$1
|
||||
if [ -n "${IS_DEV_BUILD}" ]; then
|
||||
echo "${WAZUH_IMAGE_VERSION}${WAZUH_DEV_STAGE:+-${WAZUH_DEV_STAGE,,}}-${commit}"
|
||||
else
|
||||
echo "${base_tag}"
|
||||
fi
|
||||
}
|
||||
|
||||
export WAZUH_VERSION="$WAZUH_IMAGE_VERSION"
|
||||
export INDEXER_TAG=$(make_tag "${INDEXER_COMMIT:-latest}")
|
||||
export MANAGER_TAG=$(make_tag "${MANAGER_COMMIT:-latest}")
|
||||
export DASHBOARD_TAG=$(make_tag "${DASHBOARD_COMMIT:-latest}")
|
||||
export AGENT_TAG=$(make_tag "${AGENT_COMMIT:-latest}")
|
||||
|
||||
echo "Image tags:"
|
||||
echo " wazuh-indexer: ${WAZUH_REGISTRY}/wazuh/wazuh-indexer:${INDEXER_TAG}"
|
||||
echo " wazuh-manager: ${WAZUH_REGISTRY}/wazuh/wazuh-manager:${MANAGER_TAG}"
|
||||
echo " wazuh-dashboard: ${WAZUH_REGISTRY}/wazuh/wazuh-dashboard:${DASHBOARD_TAG}"
|
||||
echo " wazuh-agent: ${WAZUH_REGISTRY}/wazuh/wazuh-agent:${AGENT_TAG}"
|
||||
|
||||
# Bake options: --push for multi-arch (can't load multi-platform locally),
|
||||
# --load for single-arch (stores image in local Docker daemon).
|
||||
local bake_opts="--no-cache"
|
||||
if [ "${MULTIARCH}" ]; then
|
||||
build_cmd="docker buildx build --platform linux/amd64,linux/arm64 --push --no-cache"
|
||||
bake_opts="${bake_opts} --push"
|
||||
else
|
||||
build_cmd="docker build --no-cache"
|
||||
bake_opts="${bake_opts} --load"
|
||||
fi
|
||||
|
||||
# Build each component
|
||||
for component in "${components_to_build[@]}"; do
|
||||
echo "Building ${component} image..."
|
||||
|
||||
# Get component-specific commit reference
|
||||
COMPONENT_COMMIT=$(get_component_commit "${component}")
|
||||
|
||||
# Generate component-specific IMAGE_TAG.
|
||||
# The commit suffix is only appended when --dev was passed, which maps
|
||||
# directly to inputs.dev=true in the workflow. This ensures:
|
||||
# dev=false, tag=5.0.0 → 5.0.0
|
||||
# dev=false, tag=5.0.0-beta1 → 5.0.0-beta1
|
||||
# dev=true, tag=5.0.0 → 5.0.0-latest
|
||||
# dev=true, tag=5.0.0-beta1 → 5.0.0-beta1-latest
|
||||
if [ -n "${IS_DEV_BUILD}" ]; then
|
||||
IMAGE_TAG="${WAZUH_IMAGE_VERSION}${WAZUH_DEV_STAGE:+-${WAZUH_DEV_STAGE,,}}-${COMPONENT_COMMIT}"
|
||||
else
|
||||
IMAGE_TAG="${WAZUH_IMAGE_VERSION}${WAZUH_DEV_STAGE:+-${WAZUH_DEV_STAGE,,}}"
|
||||
fi
|
||||
echo "Using IMAGE_TAG: ${IMAGE_TAG} for ${component}"
|
||||
export IMAGE_TAG="$IMAGE_TAG"
|
||||
|
||||
# Build common args (used by all components)
|
||||
build_args=(
|
||||
-t "${WAZUH_REGISTRY}/wazuh/${component}:${IMAGE_TAG}"
|
||||
--build-arg WAZUH_VERSION="${WAZUH_IMAGE_VERSION}"
|
||||
)
|
||||
|
||||
# Add component-specific args
|
||||
case "${component}" in
|
||||
wazuh-indexer)
|
||||
build_args+=(
|
||||
--build-arg wazuh_indexer_x86_64_rpm="${wazuh_indexer_x86_64_rpm}"
|
||||
--build-arg wazuh_indexer_aarch64_rpm="${wazuh_indexer_aarch64_rpm}"
|
||||
--build-arg wazuh_certs_tool="${wazuh_certs_tool}"
|
||||
--build-arg wazuh_config_yml="${wazuh_config_yml}"
|
||||
)
|
||||
;;
|
||||
wazuh-manager)
|
||||
build_args+=(
|
||||
--build-arg wazuh_manager_x86_64_rpm="${wazuh_manager_x86_64_rpm}"
|
||||
--build-arg wazuh_manager_aarch64_rpm="${wazuh_manager_aarch64_rpm}"
|
||||
)
|
||||
;;
|
||||
wazuh-dashboard)
|
||||
build_args+=(
|
||||
--build-arg wazuh_dashboard_x86_64_rpm="${wazuh_dashboard_x86_64_rpm}"
|
||||
--build-arg wazuh_dashboard_aarch64_rpm="${wazuh_dashboard_aarch64_rpm}"
|
||||
--build-arg wazuh_certs_tool="${wazuh_certs_tool}"
|
||||
--build-arg wazuh_config_yml="${wazuh_config_yml}"
|
||||
)
|
||||
;;
|
||||
wazuh-agent)
|
||||
build_args+=(
|
||||
--build-arg wazuh_agent_x86_64_rpm="${wazuh_agent_x86_64_rpm}"
|
||||
--build-arg wazuh_agent_aarch64_rpm="${wazuh_agent_aarch64_rpm}"
|
||||
)
|
||||
;;
|
||||
esac
|
||||
|
||||
# Execute build
|
||||
$build_cmd "${build_args[@]}" ${component}/ || clean 1
|
||||
echo "${component} image built successfully!"
|
||||
done
|
||||
# Build a specific component or the full default group (all 4 in parallel).
|
||||
if [ -z "${WAZUH_COMPONENT}" ]; then
|
||||
echo "Building all components in parallel..."
|
||||
docker buildx bake ${bake_opts} -f docker-bake.hcl || clean 1
|
||||
else
|
||||
echo "Building ${WAZUH_COMPONENT}..."
|
||||
docker buildx bake ${bake_opts} -f docker-bake.hcl "${WAZUH_COMPONENT}" || clean 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Image build process completed!"
|
||||
|
||||
@@ -1,4 +1,12 @@
|
||||
# Wazuh App Copyright (C) 2017, Wazuh Inc. (License GPLv2)
|
||||
#
|
||||
# Build-only compose file for `docker compose build`.
|
||||
# Only `build` and `image` keys are relevant here; all runtime configuration
|
||||
# (ports, volumes, environment, depends_on, etc.) belongs in the deployment
|
||||
# compose files under single-node/ or multi-node/.
|
||||
#
|
||||
# For parallel builds and full multi-arch support, prefer docker-bake.hcl:
|
||||
# docker buildx bake -f docker-bake.hcl
|
||||
services:
|
||||
wazuh.manager:
|
||||
build:
|
||||
@@ -10,23 +18,6 @@ services:
|
||||
wazuh_certs_tool: ${wazuh_certs_tool}
|
||||
wazuh_config_yml: ${wazuh_config_yml}
|
||||
image: ${WAZUH_REGISTRY}/wazuh/wazuh-manager:${IMAGE_TAG}
|
||||
hostname: wazuh.manager
|
||||
restart: always
|
||||
ports:
|
||||
- "1514:1514"
|
||||
- "1515:1515"
|
||||
- "514:514/udp"
|
||||
- "55000:55000"
|
||||
environment:
|
||||
- INDEXER_URL=https://wazuh.indexer:9200
|
||||
- INDEXER_USERNAME=admin
|
||||
- INDEXER_PASSWORD=admin
|
||||
volumes:
|
||||
- wazuh_api_configuration:/var/wazuh-manager/api/configuration
|
||||
- wazuh_etc:/var/wazuh-manager/etc
|
||||
- wazuh_logs:/var/wazuh-manager/logs
|
||||
- wazuh_queue:/var/wazuh-manager/queue
|
||||
- wazuh_var_multigroups:/var/wazuh-manager/var/multigroups
|
||||
|
||||
wazuh.agent:
|
||||
build:
|
||||
@@ -36,8 +27,6 @@ services:
|
||||
wazuh_agent_x86_64_rpm: ${wazuh_agent_x86_64_rpm}
|
||||
wazuh_agent_aarch64_rpm: ${wazuh_agent_aarch64_rpm}
|
||||
image: ${WAZUH_REGISTRY}/wazuh/wazuh-agent:${IMAGE_TAG}
|
||||
hostname: wazuh.agent
|
||||
restart: always
|
||||
|
||||
wazuh.indexer:
|
||||
build:
|
||||
@@ -49,19 +38,6 @@ services:
|
||||
wazuh_certs_tool: ${wazuh_certs_tool}
|
||||
wazuh_config_yml: ${wazuh_config_yml}
|
||||
image: ${WAZUH_REGISTRY}/wazuh/wazuh-indexer:${IMAGE_TAG}
|
||||
hostname: wazuh.indexer
|
||||
restart: always
|
||||
ports:
|
||||
- "9200:9200"
|
||||
environment:
|
||||
- "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m"
|
||||
ulimits:
|
||||
memlock:
|
||||
soft: -1
|
||||
hard: -1
|
||||
nofile:
|
||||
soft: 65536
|
||||
hard: 65536
|
||||
|
||||
wazuh.dashboard:
|
||||
build:
|
||||
@@ -73,26 +49,4 @@ services:
|
||||
wazuh_certs_tool: ${wazuh_certs_tool}
|
||||
wazuh_config_yml: ${wazuh_config_yml}
|
||||
image: ${WAZUH_REGISTRY}/wazuh/wazuh-dashboard:${IMAGE_TAG}
|
||||
hostname: wazuh.dashboard
|
||||
restart: always
|
||||
ports:
|
||||
- 443:443
|
||||
environment:
|
||||
- INDEXER_USERNAME=admin
|
||||
- INDEXER_PASSWORD=admin
|
||||
- SERVER_SSL_ENABLED=false
|
||||
- WAZUH_API_URL=https://wazuh.manager
|
||||
depends_on:
|
||||
- wazuh.indexer
|
||||
links:
|
||||
- wazuh.indexer:wazuh.indexer
|
||||
- wazuh.manager:wazuh.manager
|
||||
|
||||
volumes:
|
||||
wazuh_api_configuration:
|
||||
wazuh_etc:
|
||||
wazuh_logs:
|
||||
wazuh_queue:
|
||||
wazuh_var_multigroups:
|
||||
wazuh_active_response:
|
||||
|
||||
|
||||
@@ -0,0 +1,108 @@
|
||||
# Wazuh Docker Copyright (C) 2017, Wazuh Inc. (License GPLv2)
|
||||
#
|
||||
# Docker Buildx Bake file.
|
||||
# Builds all Wazuh component images in parallel.
|
||||
#
|
||||
# Usage:
|
||||
# docker buildx bake # build all (local, single-arch)
|
||||
# docker buildx bake wazuh-manager # build one component
|
||||
# docker buildx bake --push # push to registry after build
|
||||
#
|
||||
# Variables are read automatically from the environment (see build-images.sh).
|
||||
|
||||
# ── Global variables ──────────────────────────────────────────────────────────
|
||||
|
||||
variable "WAZUH_VERSION" { default = "5.0.0" }
|
||||
variable "WAZUH_REGISTRY" { default = "docker.io" }
|
||||
|
||||
# Set IMAGE_TAG externally to override; defaults to WAZUH_VERSION.
|
||||
variable "IMAGE_TAG" { default = WAZUH_VERSION }
|
||||
|
||||
# MULTIARCH: set to a non-empty value to build linux/amd64 + linux/arm64.
|
||||
variable "MULTIARCH" { default = "" }
|
||||
|
||||
# Per-component tags — all default to IMAGE_TAG.
|
||||
# In dev builds the shell script sets each one independently to append the
|
||||
# per-component commit ref (e.g. MANAGER_TAG=5.0.0-beta1-abc1234).
|
||||
variable "INDEXER_TAG" { default = IMAGE_TAG }
|
||||
variable "MANAGER_TAG" { default = IMAGE_TAG }
|
||||
variable "DASHBOARD_TAG" { default = IMAGE_TAG }
|
||||
variable "AGENT_TAG" { default = IMAGE_TAG }
|
||||
|
||||
# ── Artifact URL variables ────────────────────────────────────────────────────
|
||||
# Populated by build-images.sh from artifacts_env.txt (sourced into env).
|
||||
|
||||
variable "wazuh_indexer_x86_64_rpm" { default = "" }
|
||||
variable "wazuh_indexer_aarch64_rpm" { default = "" }
|
||||
variable "wazuh_manager_x86_64_rpm" { default = "" }
|
||||
variable "wazuh_manager_aarch64_rpm" { default = "" }
|
||||
variable "wazuh_dashboard_x86_64_rpm" { default = "" }
|
||||
variable "wazuh_dashboard_aarch64_rpm" { default = "" }
|
||||
variable "wazuh_agent_x86_64_rpm" { default = "" }
|
||||
variable "wazuh_agent_aarch64_rpm" { default = "" }
|
||||
variable "wazuh_certs_tool" { default = "" }
|
||||
variable "wazuh_config_yml" { default = "" }
|
||||
|
||||
# ── Default group: builds all components ─────────────────────────────────────
|
||||
|
||||
group "default" {
|
||||
targets = ["wazuh-indexer", "wazuh-manager", "wazuh-dashboard", "wazuh-agent"]
|
||||
}
|
||||
|
||||
# ── Shared base target ────────────────────────────────────────────────────────
|
||||
# All component targets inherit from here. Not built directly.
|
||||
|
||||
target "_common" {
|
||||
platforms = MULTIARCH != "" ? ["linux/amd64", "linux/arm64"] : ["linux/amd64"]
|
||||
args = {
|
||||
WAZUH_VERSION = WAZUH_VERSION
|
||||
}
|
||||
}
|
||||
|
||||
# ── Component targets ─────────────────────────────────────────────────────────
|
||||
|
||||
target "wazuh-indexer" {
|
||||
inherits = ["_common"]
|
||||
context = "wazuh-indexer/"
|
||||
tags = ["${WAZUH_REGISTRY}/wazuh/wazuh-indexer:${INDEXER_TAG}"]
|
||||
args = {
|
||||
wazuh_indexer_x86_64_rpm = wazuh_indexer_x86_64_rpm
|
||||
wazuh_indexer_aarch64_rpm = wazuh_indexer_aarch64_rpm
|
||||
wazuh_certs_tool = wazuh_certs_tool
|
||||
wazuh_config_yml = wazuh_config_yml
|
||||
}
|
||||
}
|
||||
|
||||
target "wazuh-manager" {
|
||||
inherits = ["_common"]
|
||||
context = "wazuh-manager/"
|
||||
tags = ["${WAZUH_REGISTRY}/wazuh/wazuh-manager:${MANAGER_TAG}"]
|
||||
args = {
|
||||
wazuh_manager_x86_64_rpm = wazuh_manager_x86_64_rpm
|
||||
wazuh_manager_aarch64_rpm = wazuh_manager_aarch64_rpm
|
||||
wazuh_certs_tool = wazuh_certs_tool
|
||||
wazuh_config_yml = wazuh_config_yml
|
||||
}
|
||||
}
|
||||
|
||||
target "wazuh-dashboard" {
|
||||
inherits = ["_common"]
|
||||
context = "wazuh-dashboard/"
|
||||
tags = ["${WAZUH_REGISTRY}/wazuh/wazuh-dashboard:${DASHBOARD_TAG}"]
|
||||
args = {
|
||||
wazuh_dashboard_x86_64_rpm = wazuh_dashboard_x86_64_rpm
|
||||
wazuh_dashboard_aarch64_rpm = wazuh_dashboard_aarch64_rpm
|
||||
wazuh_certs_tool = wazuh_certs_tool
|
||||
wazuh_config_yml = wazuh_config_yml
|
||||
}
|
||||
}
|
||||
|
||||
target "wazuh-agent" {
|
||||
inherits = ["_common"]
|
||||
context = "wazuh-agent/"
|
||||
tags = ["${WAZUH_REGISTRY}/wazuh/wazuh-agent:${AGENT_TAG}"]
|
||||
args = {
|
||||
wazuh_agent_x86_64_rpm = wazuh_agent_x86_64_rpm
|
||||
wazuh_agent_aarch64_rpm = wazuh_agent_aarch64_rpm
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,13 @@
|
||||
# Wazuh Docker Copyright (C) 2017, Wazuh Inc. (License GPLv2)
|
||||
FROM amazonlinux:2023
|
||||
|
||||
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
|
||||
################################################################################
|
||||
# Build stage 0 (builder):
|
||||
# Install Wazuh Agent RPM and download tini (static PID-1 init shim).
|
||||
################################################################################
|
||||
FROM amazonlinux:2023 AS builder
|
||||
|
||||
ARG WAZUH_VERSION
|
||||
ARG S6_VERSION="v2.2.0.3"
|
||||
ARG TINI_VERSION="v0.19.0"
|
||||
ARG WAZUH_MANAGER='CHANGE_MANAGER_IP'
|
||||
ARG WAZUH_REGISTRATION_SERVER='CHANGE_ENROLL_IP'
|
||||
ARG WAZUH_AGENT_NAME='CHANGE_AGENT_NAME'
|
||||
@@ -16,19 +19,51 @@ RUN RPM_ARCH="x86_64" && \
|
||||
if [ "${TARGETARCH}" = "arm64" ]; then RPM_ARCH="aarch64"; fi && \
|
||||
URL_VAR="wazuh_agent_${RPM_ARCH}_rpm" && \
|
||||
agent_url="${!URL_VAR}" && \
|
||||
dnf install curl-minimal tar gzip procps -y &&\
|
||||
dnf install curl-minimal tar gzip procps shadow-utils -y && \
|
||||
curl -o /wazuh-agent.rpm "${agent_url}" && \
|
||||
dnf install /wazuh-agent.rpm -y && \
|
||||
rm -rf /wazuh-agent.rpm && \
|
||||
dnf clean all && \
|
||||
sed -i '/<authorization_pass_path>/d' /var/ossec/etc/ossec.conf && \
|
||||
S6_ARCH="amd64" && \
|
||||
if [ "${TARGETARCH}" = "arm64" ]; then S6_ARCH="aarch64"; fi && \
|
||||
curl --fail --silent -L https://github.com/just-containers/s6-overlay/releases/download/${S6_VERSION}/s6-overlay-${S6_ARCH}.tar.gz \
|
||||
-o /tmp/s6-overlay-${S6_ARCH}.tar.gz && \
|
||||
tar xzf /tmp/s6-overlay-${S6_ARCH}.tar.gz -C / --exclude="./bin" && \
|
||||
tar xzf /tmp/s6-overlay-${S6_ARCH}.tar.gz -C /usr ./bin && \
|
||||
rm /tmp/s6-overlay-${S6_ARCH}.tar.gz
|
||||
sed -i '/<authorization_pass_path>/d' /var/ossec/etc/ossec.conf
|
||||
|
||||
# Download tini static binary (no external library dependencies)
|
||||
RUN TINI_ARCH="amd64" && \
|
||||
if [ "${TARGETARCH}" = "arm64" ]; then TINI_ARCH="arm64"; fi && \
|
||||
curl --fail --silent -L \
|
||||
https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini-static-${TINI_ARCH} \
|
||||
-o /usr/local/bin/tini && \
|
||||
chmod +x /usr/local/bin/tini
|
||||
|
||||
################################################################################
|
||||
# Build stage 1 (the actual Wazuh Agent image):
|
||||
# Copy Wazuh Agent and tini from builder. Install only runtime dependencies.
|
||||
################################################################################
|
||||
FROM amazonlinux:2023
|
||||
|
||||
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
|
||||
|
||||
# Install only runtime dependencies
|
||||
RUN dnf install procps shadow-utils -y && \
|
||||
dnf clean all && \
|
||||
getent group wazuh || groupadd -r -g 999 wazuh && \
|
||||
getent passwd wazuh || useradd --system \
|
||||
--uid 999 \
|
||||
--no-create-home \
|
||||
--home-dir /var/ossec \
|
||||
--gid wazuh \
|
||||
--shell /sbin/nologin \
|
||||
wazuh
|
||||
|
||||
# Copy Wazuh Agent installation from builder
|
||||
COPY --from=builder /var/ossec /var/ossec
|
||||
|
||||
# Copy tini static binary
|
||||
COPY --from=builder /usr/local/bin/tini /usr/local/bin/tini
|
||||
|
||||
# Copy entrypoint and init scripts
|
||||
COPY config/entrypoint.sh /entrypoint.sh
|
||||
COPY config/etc/ /etc/
|
||||
|
||||
ENTRYPOINT [ "/init" ]
|
||||
RUN chmod 755 /entrypoint.sh
|
||||
|
||||
ENTRYPOINT ["/usr/local/bin/tini", "--", "/entrypoint.sh"]
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
#!/bin/bash
|
||||
# Wazuh Docker Copyright (C) 2017, Wazuh Inc. (License GPLv2)
|
||||
|
||||
# Run initialization and configuration
|
||||
bash /etc/cont-init.d/0-wazuh-init
|
||||
|
||||
# Start Wazuh Agent (may log warnings if manager address is not configured)
|
||||
bash /etc/cont-init.d/1-agent
|
||||
|
||||
# Tail the main log to stdout so Docker captures it
|
||||
tail -F /var/ossec/logs/ossec.log &
|
||||
TAIL_PID=$!
|
||||
|
||||
# Graceful shutdown: stop Wazuh and exit cleanly on SIGTERM/SIGINT
|
||||
_stop() {
|
||||
echo "Stopping Wazuh Agent..."
|
||||
/var/ossec/bin/wazuh-control stop 2>/dev/null || true
|
||||
kill "${TAIL_PID}" 2>/dev/null || true
|
||||
}
|
||||
trap _stop SIGTERM SIGINT SIGQUIT
|
||||
|
||||
wait "${TAIL_PID}"
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
#!/bin/bash
|
||||
# Wazuh App Copyright (C) 2017, Wazuh Inc. (License GPLv2)
|
||||
|
||||
WAZUH_INSTALL_PATH=/var/ossec
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
#!/bin/bash
|
||||
|
||||
##############################################################################
|
||||
# Migration sequence
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/with-contenv sh
|
||||
#!/bin/sh
|
||||
|
||||
# dumping ossec.log to standard output
|
||||
exec tail -F /var/ossec/logs/ossec.log
|
||||
|
||||
@@ -1,53 +1,88 @@
|
||||
# Wazuh Docker Copyright (C) 2017, Wazuh Inc. (License GPLv2)
|
||||
FROM amazonlinux:2023
|
||||
|
||||
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
|
||||
################################################################################
|
||||
# Build stage 0 (builder):
|
||||
# Install Wazuh Manager RPM, configure directories, prepare permanent data,
|
||||
# and download tini (static PID-1 init shim).
|
||||
################################################################################
|
||||
FROM amazonlinux:2023 AS builder
|
||||
|
||||
ARG WAZUH_VERSION
|
||||
ARG S6_VERSION="v2.2.0.3"
|
||||
ARG TINI_VERSION="v0.19.0"
|
||||
ARG TARGETARCH
|
||||
ARG wazuh_manager_x86_64_rpm
|
||||
ARG wazuh_manager_aarch64_rpm
|
||||
|
||||
# Prepare permanent data config needed by permanent_data.sh at build time
|
||||
COPY config/permanent_data.env config/permanent_data.sh /
|
||||
|
||||
RUN RPM_ARCH="x86_64" && \
|
||||
if [ "${TARGETARCH}" = "arm64" ]; then RPM_ARCH="aarch64"; fi && \
|
||||
URL_VAR="wazuh_manager_${RPM_ARCH}_rpm" && \
|
||||
manager_url="${!URL_VAR}" && \
|
||||
dnf install curl-minimal xz gnupg tar gzip openssl findutils procps -y &&\
|
||||
dnf install curl-minimal xz gnupg tar gzip openssl findutils procps shadow-utils -y && \
|
||||
dnf clean all && \
|
||||
curl -o /wazuh-manager.rpm "${manager_url}" && \
|
||||
dnf install /wazuh-manager.rpm -y && \
|
||||
rm -rf /wazuh-manager.rpm && \
|
||||
dnf clean all && \
|
||||
S6_ARCH="amd64" && \
|
||||
if [ "${TARGETARCH}" = "arm64" ]; then S6_ARCH="aarch64"; fi && \
|
||||
curl --fail --silent -L https://github.com/just-containers/s6-overlay/releases/download/${S6_VERSION}/s6-overlay-${S6_ARCH}.tar.gz \
|
||||
-o /tmp/s6-overlay-${S6_ARCH}.tar.gz && \
|
||||
tar xzf /tmp/s6-overlay-${S6_ARCH}.tar.gz -C / --exclude="./bin" && \
|
||||
tar xzf /tmp/s6-overlay-${S6_ARCH}.tar.gz -C /usr ./bin && \
|
||||
rm /tmp/s6-overlay-${S6_ARCH}.tar.gz && \
|
||||
rm -f /var/wazuh-manager/etc/sslmanager.key && \
|
||||
rm -f /var/wazuh-manager/etc/sslmanager.cert
|
||||
|
||||
COPY config/etc/ /etc/
|
||||
# Prepare permanent data
|
||||
# Sync calls are due to https://github.com/docker/docker/issues/9547
|
||||
|
||||
COPY config/permanent_data.env config/permanent_data.sh /
|
||||
|
||||
#Make mount directories for keep permissions
|
||||
|
||||
RUN mkdir -p /var/wazuh-manager/var/multigroups && \
|
||||
# Set up required directories with correct ownership
|
||||
mkdir -p /var/wazuh-manager/var/multigroups && \
|
||||
chown root:wazuh-manager /var/wazuh-manager/var/multigroups && \
|
||||
chmod 770 /var/wazuh-manager/var/multigroups && \
|
||||
mkdir -p /var/wazuh-manager/etc/certs && \
|
||||
chown wazuh-manager:wazuh-manager /var/wazuh-manager/etc/certs && \
|
||||
chmod 500 /var/wazuh-manager/etc/certs && \
|
||||
chmod 755 /permanent_data.sh && \
|
||||
rm -f /var/wazuh-manager/etc/sslmanager.key && \
|
||||
rm -f /var/wazuh-manager/etc/sslmanager.cert
|
||||
|
||||
# Prepare permanent data snapshot (sync calls: https://github.com/docker/docker/issues/9547)
|
||||
RUN chmod 755 /permanent_data.sh && \
|
||||
sync && /permanent_data.sh && \
|
||||
sync && rm /permanent_data.sh
|
||||
|
||||
# Download tini static binary (no external library dependencies)
|
||||
RUN TINI_ARCH="amd64" && \
|
||||
if [ "${TARGETARCH}" = "arm64" ]; then TINI_ARCH="arm64"; fi && \
|
||||
curl --fail --silent -L \
|
||||
https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini-static-${TINI_ARCH} \
|
||||
-o /usr/local/bin/tini && \
|
||||
chmod +x /usr/local/bin/tini
|
||||
|
||||
################################################################################
|
||||
# Build stage 1 (the actual Wazuh Manager image):
|
||||
# Copy Wazuh Manager and tini from builder. Install only runtime dependencies.
|
||||
################################################################################
|
||||
FROM amazonlinux:2023
|
||||
|
||||
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
|
||||
|
||||
# Install only runtime dependencies (no curl, tar, gzip, xz, or full dnf stack)
|
||||
RUN dnf install openssl findutils procps shadow-utils -y && \
|
||||
dnf clean all && \
|
||||
getent group wazuh-manager || groupadd -r -g 999 wazuh-manager && \
|
||||
getent passwd wazuh-manager || useradd --system \
|
||||
--uid 999 \
|
||||
--no-create-home \
|
||||
--home-dir /var/wazuh-manager \
|
||||
--gid wazuh-manager \
|
||||
--shell /sbin/nologin \
|
||||
wazuh-manager
|
||||
|
||||
# Copy Wazuh Manager installation (includes permanent data snapshot)
|
||||
COPY --from=builder /var/wazuh-manager /var/wazuh-manager
|
||||
|
||||
# Copy tini static binary
|
||||
COPY --from=builder /usr/local/bin/tini /usr/local/bin/tini
|
||||
|
||||
# Copy entrypoint, init scripts and runtime config
|
||||
COPY config/entrypoint.sh /entrypoint.sh
|
||||
COPY config/etc/ /etc/
|
||||
COPY config/permanent_data.env /
|
||||
|
||||
RUN chmod 755 /entrypoint.sh
|
||||
|
||||
# Services ports
|
||||
EXPOSE 55000/tcp 1514/tcp 1515/tcp 514/udp 1516/tcp
|
||||
|
||||
ENTRYPOINT [ "/init" ]
|
||||
ENTRYPOINT ["/usr/local/bin/tini", "--", "/entrypoint.sh"]
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
#!/bin/bash
|
||||
# Wazuh Docker Copyright (C) 2017, Wazuh Inc. (License GPLv2)
|
||||
|
||||
# Run initialization and configuration
|
||||
bash /etc/cont-init.d/0-wazuh-init
|
||||
|
||||
# Start Wazuh Manager (may log warnings in environments without certs)
|
||||
bash /etc/cont-init.d/1-manager
|
||||
|
||||
# Tail the main log to stdout so Docker captures it
|
||||
tail -F /var/wazuh-manager/logs/wazuh-manager.log &
|
||||
TAIL_PID=$!
|
||||
|
||||
# Graceful shutdown: stop Wazuh and exit cleanly on SIGTERM/SIGINT
|
||||
_stop() {
|
||||
echo "Stopping Wazuh Manager..."
|
||||
/var/wazuh-manager/bin/wazuh-manager-control stop 2>/dev/null || true
|
||||
kill "${TAIL_PID}" 2>/dev/null || true
|
||||
}
|
||||
trap _stop SIGTERM SIGINT SIGQUIT
|
||||
|
||||
wait "${TAIL_PID}"
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
#!/bin/bash
|
||||
# Wazuh App Copyright (C) 2017, Wazuh Inc. (License GPLv2)
|
||||
|
||||
# Variables
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/with-contenv bash
|
||||
#!/bin/bash
|
||||
|
||||
##############################################################################
|
||||
# Migration sequence
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/with-contenv sh
|
||||
#!/bin/sh
|
||||
|
||||
# dumping wazuh-manager.log to standard output
|
||||
exec tail -F /var/wazuh-manager/logs/wazuh-manager.log
|
||||
|
||||
Reference in New Issue
Block a user