mirror of
https://github.com/donaldzou/WGDashboard.git
synced 2025-10-03 15:56:17 +00:00
feat(docker): prepare for version 4.3
This commit is contained in:
@@ -1,30 +1,71 @@
|
|||||||
FROM golang:1.24 AS awg-go
|
#
|
||||||
|
# AWG GOLANG BUILDING STAGE
|
||||||
|
# Base: Debian
|
||||||
|
#
|
||||||
|
FROM golang:1.25 AS awg-go
|
||||||
|
|
||||||
RUN git clone https://github.com/WGDashboard/amneziawg-go /awg
|
# Standard working directory for WGDashboard
|
||||||
WORKDIR /awg
|
RUN mkdir -p /workspace && \
|
||||||
|
git clone https://github.com/WGDashboard/amneziawg-go /workspace/awg
|
||||||
|
|
||||||
|
WORKDIR /workspace/awg
|
||||||
RUN go mod download && \
|
RUN go mod download && \
|
||||||
go mod verify && \
|
go mod verify && \
|
||||||
go build -ldflags '-linkmode external -extldflags "-fno-PIC -static"' -v -o /usr/bin
|
go build -ldflags '-linkmode external -extldflags "-fno-PIC -static"' -v -o /usr/bin
|
||||||
|
|
||||||
FROM alpine:latest AS awg-tools
|
#
|
||||||
|
# AWG TOOLS BUILDING STAGE
|
||||||
|
# Base: Debian
|
||||||
|
#
|
||||||
|
FROM debian:stable-slim AS awg-tools
|
||||||
|
|
||||||
RUN apk update && apk add --no-cache \
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
make git build-base linux-headers \
|
make git build-essential linux-headers-generic ca-certificates && \
|
||||||
&& git clone https://github.com/WGDashboard/amneziawg-tools \
|
rm -rf /var/lib/apt/lists/*
|
||||||
&& cd amneziawg-tools/src \
|
|
||||||
&& make \
|
|
||||||
&& chmod +x wg*
|
|
||||||
|
|
||||||
FROM alpine:latest
|
RUN mkdir -p /workspace && \
|
||||||
|
git clone https://github.com/WGDashboard/amneziawg-tools /workspace/awg-tools
|
||||||
|
|
||||||
|
WORKDIR /workspace/awg-tools/src
|
||||||
|
RUN make && chmod +x wg*
|
||||||
|
|
||||||
|
#
|
||||||
|
# PIP DEPENDENCY BUILDING
|
||||||
|
# Base: Alpine
|
||||||
|
#
|
||||||
|
FROM python:3.13-alpine AS pip-builder
|
||||||
|
|
||||||
|
RUN apk add --no-cache --virtual .build-deps \
|
||||||
|
build-base \
|
||||||
|
mariadb-dev \
|
||||||
|
pkgconfig \
|
||||||
|
python3-dev \
|
||||||
|
libffi-dev \
|
||||||
|
linux-headers \
|
||||||
|
&& mkdir -p /opt/wgdashboard/src \
|
||||||
|
&& python3 -m venv /opt/wgdashboard/src/venv
|
||||||
|
|
||||||
|
COPY ./src/requirements.txt /opt/wgdashboard/src
|
||||||
|
RUN . /opt/wgdashboard/src/venv/bin/activate && \
|
||||||
|
pip3 install --upgrade pip && \
|
||||||
|
pip3 install -r /opt/wgdashboard/src/requirements.txt
|
||||||
|
|
||||||
|
RUN apk del .build-deps
|
||||||
|
|
||||||
|
#
|
||||||
|
# WGDashboard RUNNING STAGE
|
||||||
|
# Base: Alpine
|
||||||
|
#
|
||||||
|
FROM python:3.13-alpine
|
||||||
LABEL maintainer="dselen@nerthus.nl"
|
LABEL maintainer="dselen@nerthus.nl"
|
||||||
|
|
||||||
RUN apk update && apk add --no-cache \
|
RUN apk update && apk add --no-cache \
|
||||||
iproute2 iptables bash curl wget unzip procps sudo \
|
iproute2 iptables bash curl wget unzip procps \
|
||||||
tzdata wireguard-tools python3 py3-psutil py3-bcrypt openresolv
|
sudo tzdata wireguard-tools openresolv
|
||||||
|
|
||||||
COPY --from=awg-go /usr/bin/amneziawg-go /usr/bin/amneziawg-go
|
COPY --from=awg-go /usr/bin/amneziawg-go /usr/bin/amneziawg-go
|
||||||
COPY --from=awg-tools /amneziawg-tools/src/wg /usr/bin/awg
|
COPY --from=awg-tools /workspace/awg-tools/src/wg /usr/bin/awg
|
||||||
COPY --from=awg-tools /amneziawg-tools/src/wg-quick/linux.bash /usr/bin/awg-quick
|
COPY --from=awg-tools /workspace/awg-tools/src/wg-quick/linux.bash /usr/bin/awg-quick
|
||||||
|
|
||||||
# Declaring environment variables, change Peernet to an address you like, standard is a 24 bit subnet.
|
# Declaring environment variables, change Peernet to an address you like, standard is a 24 bit subnet.
|
||||||
ARG wg_net="10.0.0.1" \
|
ARG wg_net="10.0.0.1" \
|
||||||
@@ -44,7 +85,10 @@ RUN mkdir /data \
|
|||||||
&& mkdir /configs \
|
&& mkdir /configs \
|
||||||
&& mkdir -p ${WGDASH}/src \
|
&& mkdir -p ${WGDASH}/src \
|
||||||
&& mkdir -p /etc/amnezia/amneziawg
|
&& mkdir -p /etc/amnezia/amneziawg
|
||||||
|
|
||||||
COPY ./src ${WGDASH}/src
|
COPY ./src ${WGDASH}/src
|
||||||
|
COPY --from=pip-builder /opt/wgdashboard/src/venv /opt/wgdashboard/src/venv
|
||||||
|
RUN python3 -m venv /opt/wgdashboard/src/venv
|
||||||
|
|
||||||
# Generate basic WireGuard interface. Echoing the WireGuard interface config for readability, adjust if you want it for efficiency.
|
# Generate basic WireGuard interface. Echoing the WireGuard interface config for readability, adjust if you want it for efficiency.
|
||||||
# Also setting the pipefail option, verbose: https://github.com/hadolint/hadolint/wiki/DL4006.
|
# Also setting the pipefail option, verbose: https://github.com/hadolint/hadolint/wiki/DL4006.
|
||||||
@@ -71,6 +115,7 @@ COPY ./docker/entrypoint.sh /entrypoint.sh
|
|||||||
|
|
||||||
# Exposing the default WireGuard Dashboard port for web access.
|
# Exposing the default WireGuard Dashboard port for web access.
|
||||||
EXPOSE 10086
|
EXPOSE 10086
|
||||||
WORKDIR $WGDASH
|
WORKDIR $WGDASH/src
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]
|
#ENTRYPOINT ["sleep", "infinity"]
|
||||||
|
ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]
|
@@ -56,17 +56,8 @@ ensure_installation() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Create the Python virtual environment.
|
# Create the Python virtual environment.
|
||||||
python3 -m venv "${WGDASH}"/src/venv
|
|
||||||
. "${WGDASH}/src/venv/bin/activate"
|
. "${WGDASH}/src/venv/bin/activate"
|
||||||
|
|
||||||
# Due to this pip dependency being available as a system package we can just move it to the venv.
|
|
||||||
echo "Moving PIP dependency from ephemerality to runtime environment: psutil"
|
|
||||||
mv /usr/lib/python3.12/site-packages/psutil* "${WGDASH}"/src/venv/lib/python3.12/site-packages
|
|
||||||
|
|
||||||
# Due to this pip dependency being available as a system package we can just move it to the venv.
|
|
||||||
echo "Moving PIP dependency from ephemerality to runtime environment: bcrypt"
|
|
||||||
mv /usr/lib/python3.12/site-packages/bcrypt* "${WGDASH}"/src/venv/lib/python3.12/site-packages
|
|
||||||
|
|
||||||
# Use the bash interpreter to install WGDashboard according to the wgd.sh script.
|
# Use the bash interpreter to install WGDashboard according to the wgd.sh script.
|
||||||
/bin/bash ./wgd.sh install
|
/bin/bash ./wgd.sh install
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user