- Refactored HAProxy configuration files, templates, and paths to use `/etc/easyhaproxy` instead of `/etc/haproxy`. - Updated Dockerfile to generate DH params and placeholder certificates in the new configuration directory. - Added health check support with timeout to `DockerComposeFixture` in E2E test utilities. - Adjusted tests, templates, and plugins to use the new `Consts`-based configuration paths. - Introduced pytest fixtures for environment isolation and temporary directory management.
39 lines
1.4 KiB
Docker
39 lines
1.4 KiB
Docker
FROM alpine:3.23
|
|
|
|
ARG RELEASE_VERSION_ARG
|
|
|
|
ENV RELEASE_VERSION=$RELEASE_VERSION_ARG
|
|
ENV TZ="Etc/UTC"
|
|
|
|
RUN apk add --no-cache haproxy bash python3 certbot openssl curl \
|
|
&& apk add --no-cache --virtual .build-deps build-base python3-dev musl-dev linux-headers \
|
|
&& curl -LsSf https://astral.sh/uv/install.sh | sh \
|
|
&& ln -s /root/.local/bin/uv /usr/local/bin/uv
|
|
|
|
RUN mkdir -p /etc/easyhaproxy/haproxy \
|
|
&& openssl dhparam -out /etc/easyhaproxy/haproxy/dhparam 2048 \
|
|
&& openssl dhparam -out /etc/easyhaproxy/haproxy/dhparam-1024 1024 \
|
|
&& mkdir -p /etc/easyhaproxy/certs/certbot /etc/easyhaproxy/certs/haproxy \
|
|
&& openssl req -x509 -newkey rsa:2048 -nodes -days 365 \
|
|
-keyout /tmp/placeholder.key \
|
|
-out /tmp/placeholder.crt \
|
|
-subj "/CN=placeholder" \
|
|
&& cat /tmp/placeholder.crt /tmp/placeholder.key > /etc/easyhaproxy/certs/certbot/placeholder.pem \
|
|
&& cat /tmp/placeholder.crt /tmp/placeholder.key > /etc/easyhaproxy/certs/haproxy/placeholder.pem \
|
|
&& rm /tmp/placeholder.key /tmp/placeholder.crt
|
|
|
|
WORKDIR /scripts
|
|
|
|
COPY build/assets /
|
|
|
|
COPY pyproject.toml uv.lock LICENSE README.md /scripts/
|
|
COPY src/ /scripts/
|
|
COPY tests/ /scripts/tests/
|
|
|
|
RUN cd /scripts && uv sync --frozen
|
|
|
|
RUN apk del .build-deps
|
|
|
|
RUN cd /scripts && uv run pytest -s -vv tests/ && uv sync --no-dev
|
|
|
|
CMD ["uv", "run", "python", "-u", "/scripts/main.py"]
|