Files
amneziawg-client/Dockerfile
2025-08-13 13:56:32 +07:00

47 lines
1.9 KiB
Docker

ARG GOLANG_VERSION=1.24
ARG ALPINE_VERSION=3.21
# BUILD IMAGE
FROM golang:${GOLANG_VERSION}-alpine${ALPINE_VERSION} AS builder
WORKDIR /go
RUN apk add --no-cache git make bash build-base linux-headers && \
git clone --depth=1 https://github.com/amnezia-vpn/amneziawg-tools.git && \
git clone --depth=1 https://github.com/amnezia-vpn/amneziawg-go.git && \
cd /go/amneziawg-tools/src && make && \
cd /go/amneziawg-go && make && \
mkdir -p /tmp/build/usr/bin/ && \
mv /go/amneziawg-go/amneziawg-go /tmp/build/usr/bin/amneziawg-go && \
mv /go/amneziawg-tools/src/wg /tmp/build/usr/bin/awg && \
mv /go/amneziawg-tools/src/wg-quick/linux.bash /tmp/build/usr/bin/awg-quick
# FINAL IMAGE
FROM alpine:${ALPINE_VERSION}
COPY --from=builder /tmp/build/ /
RUN apk --no-cache add iproute2 iptables bash openresolv dpkg dumb-init iptables-legacy && \
chmod +x /usr/bin/awg /usr/bin/awg-quick /usr/bin/amneziawg-go && \
ln -s /usr/bin/awg /usr/bin/wg && \
ln -s /usr/bin/awg-quick /usr/bin/wg-quick && \
mkdir /config && \
mkdir -p /etc/amnezia/amneziawg && \
# IPv4
rm /usr/sbin/iptables /usr/sbin/iptables-save /usr/sbin/iptables-restore && \
ln -s /usr/sbin/iptables-legacy /usr/sbin/iptables && \
ln -s /usr/sbin/iptables-legacy-save /usr/sbin/iptables-save && \
ln -s /usr/sbin/iptables-legacy-restore /usr/sbin/iptables-restore && \
# IPv6
rm /usr/sbin/ip6tables /usr/sbin/ip6tables-save /usr/sbin/ip6tables-restore && \
ln -s /usr/sbin/ip6tables-legacy /usr/sbin/ip6tables && \
ln -s /usr/sbin/ip6tables-legacy-save /usr/sbin/ip6tables-save && \
ln -s /usr/sbin/ip6tables-legacy-restore /usr/sbin/ip6tables-restore
COPY --chmod=775 init.sh init.sh
HEALTHCHECK --interval=1m --timeout=5s --retries=3 CMD /usr/bin/timeout 5s /bin/sh -c \"awg show | grep interface || exit 1\"
ENTRYPOINT ["/usr/bin/dumb-init", "/init.sh"]