You've already forked directdnsonly
feat: update Dockerfile for improved BIND configuration and application setup
This commit is contained in:
64
Dockerfile
64
Dockerfile
@@ -1,11 +1,53 @@
|
|||||||
FROM pypy:slim-buster
|
FROM python:3.11.12-slim
|
||||||
|
|
||||||
RUN mkdir -p /opt/apikeyhandler/conf
|
# Install system dependencies
|
||||||
VOLUME /opt/apikeyhandler/config
|
RUN apt-get update && apt-get install -y \
|
||||||
|
bind9 \
|
||||||
COPY ./src/ /opt/apikeyhandler
|
bind9utils \
|
||||||
WORKDIR /opt/apikeyhandler
|
dnsutils \
|
||||||
|
gcc \
|
||||||
RUN pip install -r requirements.txt
|
python3-dev \
|
||||||
|
default-libmysqlclient-dev \
|
||||||
CMD pypy3 main.py
|
&& 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"]
|
||||||
@@ -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"]
|
|
||||||
@@ -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"]
|
|
||||||
@@ -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"]
|
|
||||||
Reference in New Issue
Block a user