#### Base Image: Debian 13 (Trixie) by default.
#### To build with Debian 12 instead: docker build --build-arg DEBIAN_RELEASE=bookworm-slim -t installatron-server:bookworm .
ARG DEBIAN_RELEASE=trixie-slim
FROM debian:${DEBIAN_RELEASE}

#
# Copyright © 2024-2026 Installatron LLC. All rights reserved.
#
# Email us at support@installatron.com or visit our website to learn
# more about our products and services: https://installatron.com
#

# Build: docker build --no-cache -t installatron-server .
# Build Debian 12: docker build --no-cache --build-arg DEBIAN_RELEASE=bookworm-slim -t installatron-server:bookworm .
# Run: docker run -d --name installatron-server -p 8443:443 installatron-server
# Access UI at https://IP:8443/installatron/
# Get Admin Login: docker exec -it installatron-server /usr/local/installatron/installatron --repair --reset-admin
# Get Admin SSO: docker exec -it installatron-server /usr/local/installatron/installatron --createsession

SHELL ["/bin/bash", "-o", "pipefail", "-c"]

ENV DEBIAN_FRONTEND=noninteractive

RUN set -eux; \
	apt-get update; \
	apt-get install -y --no-install-recommends \
		ca-certificates \
		curl \
		net-tools \
		pciutils \
		unzip \
	; \
	curl -fSL --retry 5 --retry-delay 2 -o /tmp/installatron-server.sh https://data.installatron.com/installatron-server.sh; \
	chmod +x /tmp/installatron-server.sh; \
	/tmp/installatron-server.sh --edge -f; \
	rm -f /tmp/installatron-server.sh; \
	apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false curl; \
	apt-get clean; \
	rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/* /tmp/* /var/tmp/*

COPY --chmod=0755 is-run.sh /usr/local/bin/is-run.sh

EXPOSE 80 443

# Installatron Server stores application state and bundled database data under
# system paths created by the installer. Bind-mount these in production if the
# container should survive replacement/recreation.
VOLUME ["/usr/local/installatron", "/var/lib/mysql"]

HEALTHCHECK --interval=30s --timeout=5s --start-period=90s --retries=3 \
	CMD curl -fkIs https://127.0.0.1/installatron/ >/dev/null || exit 1

ENTRYPOINT ["/usr/local/bin/is-run.sh"]
