Files
postinstall-debian/modules/containers/docker-engine/module.sh
2026-03-15 04:54:51 +01:00

75 lines
2.5 KiB
Bash

#!/usr/bin/env bash
MODULE_DOCKER_ENGINE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
MODULE_DOCKER_ENGINE_PROJECT_ROOT="$(cd "$MODULE_DOCKER_ENGINE_DIR/../../.." && pwd)"
# shellcheck source=lib/package.sh
source "$MODULE_DOCKER_ENGINE_PROJECT_ROOT/lib/package.sh"
# shellcheck source=lib/system.sh
source "$MODULE_DOCKER_ENGINE_PROJECT_ROOT/lib/system.sh"
# shellcheck source=modules/containers/docker-engine/config.sh
source "$MODULE_DOCKER_ENGINE_DIR/config.sh"
# shellcheck source=modules/containers/docker-engine/metadata.conf
source "$MODULE_DOCKER_ENGINE_DIR/metadata.conf"
module_docker_engine_metadata() {
printf '%s|%s|%s\n' "$MODULE_ID" "$MODULE_NAME" "$MODULE_DESCRIPTION"
}
module_docker_engine_remove_conflicts() {
local packages=(docker.io docker-doc docker-compose podman-docker containerd runc)
local pkg=""
for pkg in "${packages[@]}"; do
if package_is_installed "$pkg"; then
package_remove "$pkg"
fi
done
}
module_docker_engine_install() {
local target_user="${1:-$POSTINSTALL_DOCKER_TARGET_USER}"
local data_dir="${2:-/home/$target_user/docker}"
local version_codename=""
local arch=""
package_refresh_indexes
package_install ca-certificates curl
install -m 0755 -d "$POSTINSTALL_DOCKER_KEYRING_DIR"
curl -fsSL https://download.docker.com/linux/debian/gpg -o "$POSTINSTALL_DOCKER_KEYRING_FILE"
chmod a+r "$POSTINSTALL_DOCKER_KEYRING_FILE"
version_codename="$(. /etc/os-release && printf '%s' "$VERSION_CODENAME")"
arch="$(dpkg --print-architecture)"
printf 'deb [arch=%s signed-by=%s] https://download.docker.com/linux/debian %s stable\n' "$arch" "$POSTINSTALL_DOCKER_KEYRING_FILE" "$version_codename" > "$POSTINSTALL_DOCKER_SOURCES_FILE"
module_docker_engine_remove_conflicts
package_refresh_indexes
package_install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
if ! system_group_exists docker; then
groupadd docker
fi
if system_user_exists "$target_user" && ! system_user_in_group "$target_user" docker; then
usermod -aG docker "$target_user"
fi
mkdir -p "$data_dir"
if system_user_exists "$target_user"; then
chown "$target_user:$target_user" "$data_dir"
fi
systemctl enable --now docker
systemctl restart docker
log_info "Docker Engine installe pour $target_user"
ui_success "Docker Engine installe"
}
module_docker_engine_test() {
command -v docker >/dev/null 2>&1 || return 1
docker --version >/dev/null 2>&1 || return 1
docker compose version >/dev/null 2>&1 || return 1
}