From 02536cd448e60d1a5b206bd7e5059b1a5a0389eb Mon Sep 17 00:00:00 2001 From: Aaron Guise Date: Tue, 17 Feb 2026 16:16:01 +1300 Subject: [PATCH] feat: update Dockerfile for improved BIND configuration and application setup --- Dockerfile | 64 +++++++++++++++++++++++++++++++++++++-------- Dockerfile.deepseek | 53 ------------------------------------- Dockerfile.new | 16 ------------ Dockerfile.scratch | 54 -------------------------------------- 4 files changed, 53 insertions(+), 134 deletions(-) delete mode 100644 Dockerfile.deepseek delete mode 100644 Dockerfile.new delete mode 100644 Dockerfile.scratch diff --git a/Dockerfile b/Dockerfile index c5c1428..e965eca 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,53 @@ -FROM pypy:slim-buster - -RUN mkdir -p /opt/apikeyhandler/conf -VOLUME /opt/apikeyhandler/config - -COPY ./src/ /opt/apikeyhandler -WORKDIR /opt/apikeyhandler - -RUN pip install -r requirements.txt - -CMD pypy3 main.py \ No newline at end of file +FROM python:3.11.12-slim + +# Install system dependencies +RUN apt-get update && apt-get install -y \ + bind9 \ + bind9utils \ + dnsutils \ + gcc \ + python3-dev \ + default-libmysqlclient-dev \ + && rm -rf /var/lib/apt/lists/* + +# Configure BIND +RUN mkdir -p /etc/named/zones && \ + chown -R bind:bind /etc/named && \ + chmod 755 /etc/named/zones + +COPY docker/named.conf.local /etc/bind/ +COPY docker/named.conf.options /etc/bind/ +RUN chown root:bind /etc/bind/named.conf.* + +# Install Python dependencies +WORKDIR /app +COPY pyproject.toml poetry.lock README.md ./ + +# Install specific Poetry version that matches your lock file +RUN pip install "poetry==2.1.2" # Adjust version to match your lock file + +# Copy application files +COPY directdnsonly ./directdnsonly +COPY config ./config +COPY schema ./schema + +RUN poetry config virtualenvs.create false && \ + poetry install + + + +# Create data directories +RUN mkdir -p /app/data/queues && \ + mkdir -p /app/data/zones && \ + mkdir -p /app/logs && \ + chmod -R 755 /app/data + +# Configure BIND zone directory to match app config +#RUN ln -s /app/data/zones /etc/named/zones/dadns + +# Start script +COPY docker/entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh + +EXPOSE 2222 53/udp +CMD ["/entrypoint.sh"] \ No newline at end of file diff --git a/Dockerfile.deepseek b/Dockerfile.deepseek deleted file mode 100644 index e965eca..0000000 --- a/Dockerfile.deepseek +++ /dev/null @@ -1,53 +0,0 @@ -FROM python:3.11.12-slim - -# Install system dependencies -RUN apt-get update && apt-get install -y \ - bind9 \ - bind9utils \ - dnsutils \ - gcc \ - python3-dev \ - default-libmysqlclient-dev \ - && rm -rf /var/lib/apt/lists/* - -# Configure BIND -RUN mkdir -p /etc/named/zones && \ - chown -R bind:bind /etc/named && \ - chmod 755 /etc/named/zones - -COPY docker/named.conf.local /etc/bind/ -COPY docker/named.conf.options /etc/bind/ -RUN chown root:bind /etc/bind/named.conf.* - -# Install Python dependencies -WORKDIR /app -COPY pyproject.toml poetry.lock README.md ./ - -# Install specific Poetry version that matches your lock file -RUN pip install "poetry==2.1.2" # Adjust version to match your lock file - -# Copy application files -COPY directdnsonly ./directdnsonly -COPY config ./config -COPY schema ./schema - -RUN poetry config virtualenvs.create false && \ - poetry install - - - -# Create data directories -RUN mkdir -p /app/data/queues && \ - mkdir -p /app/data/zones && \ - mkdir -p /app/logs && \ - chmod -R 755 /app/data - -# Configure BIND zone directory to match app config -#RUN ln -s /app/data/zones /etc/named/zones/dadns - -# Start script -COPY docker/entrypoint.sh /entrypoint.sh -RUN chmod +x /entrypoint.sh - -EXPOSE 2222 53/udp -CMD ["/entrypoint.sh"] \ No newline at end of file diff --git a/Dockerfile.new b/Dockerfile.new deleted file mode 100644 index e775950..0000000 --- a/Dockerfile.new +++ /dev/null @@ -1,16 +0,0 @@ -FROM centos:latest -ENV APP_NAME=rpmbuild -ENV VERSION=latest - -RUN mkdir -p /tmp/build/rpm - -WORKDIR /tmp/build/rpm -RUN dnf install -y --allowerasing gcc rpm-build rpm-devel \ - rpmlint make bash coreutils \ - diffutils patch rpmdevtools && \ - dnf clean all && \ - rm -Rf /var/dnf/cache && \ - rpmdev-setuptree - -VOLUME /tmp/build/rpm -CMD ["rpmbuild", "--define version ${VERSION}", "-bb", "${APP_NAME}.spec"] diff --git a/Dockerfile.scratch b/Dockerfile.scratch deleted file mode 100644 index afca59f..0000000 --- a/Dockerfile.scratch +++ /dev/null @@ -1,54 +0,0 @@ -FROM python:3.8 AS builder -# Allow Passing Version from CI -ARG VERSION -ENV LC_ALL=en_NZ.utf8 -ENV LANG=en_NZ.utf8 -ENV APP_NAME="directdnsonly" - -RUN mkdir -p /tmp/build && apt-get update && \ - apt-get install -y libssl-dev python3-cryptography - -COPY src/ /tmp/build/ -COPY requirements.txt /tmp/build - -WORKDIR /tmp/build - -WORKDIR /tmp/src -RUN wget https://github.com/NixOS/patchelf/releases/download/0.12/patchelf-0.12.tar.bz2 && \ - tar xvf patchelf-0.12.tar.bz2 && \ - cd /tmp/src/patchelf-0.12* && \ - ./configure --prefix="/usr" && \ - make install - -WORKDIR /tmp/build -RUN pip3 install -r requirements.txt && \ - pyinstaller \ - --hidden-import=json \ - --hidden-import=pyopenssl \ - --hidden-import=jaraco \ - --hidden-import=cheroot \ - --hidden-import=cheroot.ssl.pyopenssl \ - --hidden-import=cheroot.ssl.builtin \ - --hidden-import=lib \ - --noconfirm --onefile ${APP_NAME}.py && \ - cd /tmp/build/dist && \ - staticx ${APP_NAME} ./${APP_NAME}_static - -RUN mkdir -p /tmp/approot && \ - mkdir -p /tmp/approot/app && \ - mkdir -p /tmp/approot/app/config && \ - mkdir -p /tmp/approot/etc && \ - mkdir -p /tmp/approot/tmp && \ - mkdir -p /tmp/approot/data && \ - cp /tmp/build/config/app.yml /tmp/approot/app/config/app.yml && \ - cp /tmp/build/dist/${APP_NAME}_static /tmp/approot/app/${APP_NAME} - -FROM scratch -COPY --from=builder /tmp/approot / -COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo -ENV TZ=Pacific/Auckland -WORKDIR /app - -VOLUME /app/config /data - -CMD ["/app/directdnsonly"]