Skip to content

Commit bbdcc84

Browse files
Merge pull request #1 from RootShell-coder/dev
deploy
2 parents ed3667f + 909b9aa commit bbdcc84

File tree

25 files changed

+4092
-1
lines changed

25 files changed

+4092
-1
lines changed

.github/workflows/docker.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: powerdns
2+
3+
on:
4+
push:
5+
branches:
6+
-
7+
"master"
8+
9+
env:
10+
IMAGE_NAME: "powerdns"
11+
VERSION: "latest"
12+
jobs:
13+
push:
14+
name: Build and push to Docker Hub
15+
runs-on: ubuntu-latest
16+
steps:
17+
-
18+
name: Checkout repository
19+
uses: actions/checkout@v3
20+
-
21+
name: Build image
22+
run: DOCKER_BUILDKIT=1 docker build . --file Dockerfile -t ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ env.VERSION }}
23+
-
24+
name: Login to Docker Hub
25+
uses: docker/login-action@v2
26+
with:
27+
username: ${{ secrets.DOCKERHUB_USERNAME }}
28+
password: ${{ secrets.DOCKERHUB_TOKEN }}
29+
-
30+
name: Push Image to Docker Hub
31+
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ env.VERSION }}
32+
-
33+
name: Tag image
34+
run: docker tag ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ env.VERSION }} ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:$(date +%Y%m%d)
35+
-
36+
name: Push tag Image to Docker Hub
37+
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:$(date +%Y%m%d)

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
mysqldb

Dockerfile

Lines changed: 175 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,175 @@
1+
FROM alpine:3.17.1 as builder
2+
3+
ENV POWERDNS_VER=4.7.3
4+
5+
RUN set -eux; \
6+
apk add --no-cache \
7+
build-base \
8+
\
9+
boost-dev curl curl-dev geoip-dev krb5-dev openssl-dev \
10+
libsodium-dev lua-dev mariadb-connector-c-dev \
11+
protobuf-dev yaml-cpp-dev zeromq-dev mariadb-dev luajit-dev \
12+
libmaxminddb-dev
13+
14+
RUN set -eux; \
15+
mkdir -p build; \
16+
cd build; \
17+
wget "https://downloads.powerdns.com/releases/pdns-${POWERDNS_VER}.tar.bz2"; \
18+
tar -jxf "pdns-${POWERDNS_VER}.tar.bz2"
19+
20+
RUN set -eux; \
21+
cd build; \
22+
cd "pdns-${POWERDNS_VER}"; \
23+
export CFLAGS="-march=x86-64 -mtune=generic -Os -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -flto=auto"; \
24+
export CXXFLAGS="-Wp,-D_GLIBCXX_ASSERTIONS"; \
25+
export LDFLAGS="-Wl,-Os,--sort-common,--as-needed,-z,relro,-z,now -flto=auto"; \
26+
\
27+
./configure \
28+
--prefix=/usr \
29+
--sysconfdir="/etc/powerdns" \
30+
--sbindir=/usr/sbin \
31+
--mandir=/usr/share/man \
32+
--infodir=/usr/share/info \
33+
--localstatedir=/var \
34+
--libdir="/usr/lib/powerdns" \
35+
--disable-static \
36+
--with-modules="" \
37+
--with-dynmodules="bind geoip gmysql lua2 pipe remote" \
38+
--with-libsodium \
39+
--enable-tools \
40+
--enable-ixfrdist \
41+
--enable-dns-over-tls \
42+
--disable-dependency-tracking \
43+
--disable-silent-rules \
44+
--enable-reproducible \
45+
--enable-unit-tests \
46+
--with-service-user=powerdns \
47+
--with-service-group=powerdns \
48+
--enable-remotebackend-zeromq; \
49+
make V=1 -j$(nproc) -l8 CFLAGS="$CFLAGS" CXXFLAGS="$CXXFLAGS" LDFLAGS="$LDFLAGS"; \
50+
\
51+
pkgdir=/build/powerdns-root; \
52+
make DESTDIR="$pkgdir" install; \
53+
\
54+
mv "$pkgdir"/etc/powerdns/pdns.conf-dist "$pkgdir"/etc/powerdns/pdns.conf; \
55+
mv "$pkgdir"/etc/powerdns/ixfrdist.example.yml "$pkgdir"/usr/share/doc/pdns/; \
56+
find "$pkgdir" -type f -name "*.a" -o -name "*.la" | xargs rm -fv; \
57+
rm -rfv \
58+
"$pkgdir"/usr/include \
59+
"$pkgdir"/usr/share/man
60+
61+
RUN set -eux; \
62+
cd build/powerdns-root; \
63+
scanelf --recursive --nobanner --osabi --etype "ET_DYN,ET_EXEC" . | awk '{print $3}' | xargs \
64+
strip \
65+
--remove-section=.comment \
66+
--remove-section=.note \
67+
-R .gnu.lto_* -R .gnu.debuglto_* \
68+
-N __gnu_lto_slim -N __gnu_lto_v1 \
69+
--strip-unneeded
70+
71+
72+
73+
FROM alpine:3.17.1
74+
75+
ENV POWERADMIN_VER=3.4.2
76+
77+
ENV TZ=Europe/Moscow
78+
ENV LANG ru_RU.UTF-8
79+
ENV LANGUAGE ru_RU.UTF-8
80+
ENV LC_ALL ru_RU.UTF-8
81+
ENV MUSL_LOCPATH /usr/share/i18n/locales/musl
82+
83+
RUN set -eux; \
84+
apk add --no-cache \
85+
boost-libs \
86+
geoip \
87+
libcurl \
88+
libmaxminddb-libs \
89+
luajit \
90+
mariadb-client \
91+
mariadb-connector-c \
92+
yaml-cpp \
93+
zeromq \
94+
openssl \
95+
\
96+
pwgen \
97+
supervisor \
98+
nginx \
99+
php81 \
100+
php81-fpm \
101+
php81-intl \
102+
php81-iconv \
103+
php81-mysqlnd \
104+
php81-pdo \
105+
php81-pdo_mysql \
106+
php81-gettext \
107+
php81-openssl \
108+
php81-session \
109+
php81-tokenizer \
110+
php81-mbstring \
111+
php81-xml \
112+
\
113+
composer musl musl-utils musl-locales tzdata patch bind-tools; \
114+
rm -f /var/cache/apk/*
115+
116+
RUN set -eux; \
117+
mkdir -p /var/www/html; \
118+
cd /var/www/html; \
119+
wget https://github.com/poweradmin/poweradmin/archive/refs/tags/v${POWERADMIN_VER}.tar.gz; \
120+
tar -xf v${POWERADMIN_VER}.tar.gz && rm -f v${POWERADMIN_VER}.tar.gz; \
121+
mv poweradmin-${POWERADMIN_VER} poweradmin; \
122+
rm -rf /var/www/html/poweradmin/install/
123+
124+
COPY --from=builder /build/powerdns-root /
125+
COPY supervisor /etc/supervisor
126+
COPY powerdns /etc/powerdns
127+
COPY entrypoint /usr/bin
128+
COPY nginx /etc/nginx
129+
COPY php81 /etc/php81
130+
COPY poweradmin /var/www/html/poweradmin/inc
131+
COPY sql /sql
132+
133+
RUN set -eux; \
134+
addgroup -S powerdns 2>/dev/null; \
135+
adduser -S -D -h /var/lib/powerdns -s /sbin/nologin -G powerdns -g powerdns powerdns 2>/dev/null; \
136+
cp /usr/share/zoneinfo/${TZ} /etc/localtime; \
137+
chmod +x /usr/bin/entrypoint; \
138+
mkdir -p /run/powerdns; \
139+
chmod 0750 /etc/powerdns; \
140+
chmod 0640 /etc/powerdns/pdns.conf; \
141+
chmod 0755 /run/powerdns; \
142+
chown -R root:powerdns /etc/powerdns; \
143+
chown -R nginx:nginx /var/www/html; \
144+
chown -R powerdns:powerdns /run/powerdns
145+
146+
#bug source correction
147+
RUN set -eux; \
148+
sed -i "s!latin1!utf8mb4!g" /sql/pdns_schema.sql; \
149+
sed -i "s!latin1!utf8mb4!g" /sql/poweradmin.sql; \
150+
# ERROR 1074 (42000) Column length too big (max = 21844); use BLOB or TEXT instead
151+
sed -i "s!VARCHAR(64000) DEFAULT NULL!TEXT(64000) DEFAULT NULL!g" /sql/pdns_schema.sql; \
152+
# BUGs Undefined constant id,error
153+
patch /var/www/html/poweradmin/dnssec_add_key.php /var/www/html/poweradmin/inc/dnssec_add_key.diff; \
154+
patch /var/www/html/poweradmin/dnssec_edit_key.php /var/www/html/poweradmin/inc/dnssec_edit_key.diff; \
155+
rm -r /var/www/html/poweradmin/inc/dnssec_add_key.diff /var/www/html/poweradmin/inc/dnssec_edit_key.diff
156+
157+
#clear source
158+
RUN set -eux; \
159+
rm -rf /var/www/html/poweradmin/.git; \
160+
rm -rf /var/www/html/poweradmin/migrations; \
161+
rm -rf /var/www/html/poweradmin/sql; \
162+
rm -rf /var/www/html/poweradmin/tests; \
163+
rm -rf /var/www/html/poweradmin/vagrant; \
164+
rm -r /var/www/html/poweradmin/.gitignore; \
165+
rm -r /var/www/html/poweradmin/README.md; \
166+
rm -r /var/www/html/poweradmin/VAGRANT.md; \
167+
rm -r /var/www/html/poweradmin/Vagrantfile; \
168+
rm -r /var/www/html/poweradmin/Dockerfile
169+
170+
171+
EXPOSE 53
172+
EXPOSE 53/UDP
173+
174+
ENTRYPOINT [ "entrypoint" ]
175+
CMD ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisor/supervisord.conf"]

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
# powerdns
1+
# powerdns

docker-compose.yml

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
version: '3.9'
2+
3+
networks:
4+
powerdns:
5+
name: powerdns
6+
driver: bridge
7+
# driver_opts:
8+
# com.docker.network.enable_ipv6: "true"
9+
# ipam:
10+
# driver: default
11+
# config:
12+
# - subnet: 172.16.238.0/24
13+
# gateway: 172.16.238.1
14+
# - subnet: "2001:3984:3989::/64"
15+
# gateway: "2001:3984:3989::1"
16+
17+
services:
18+
19+
mariadb:
20+
image: mariadb
21+
volumes:
22+
- ./mysqldb:/var/lib/mysql
23+
networks:
24+
- powerdns
25+
environment:
26+
- MYSQL_ROOT_PASSWORD=root_pass
27+
- MYSQL_DATABASE=pdns_db
28+
- MYSQL_USER=pdns_user
29+
- MYSQL_PASSWORD=pdns_pass
30+
31+
powerdns:
32+
image: powerdns:latest
33+
networks:
34+
- powerdns
35+
environment:
36+
- TZ=Europe/Moscow
37+
38+
- MYSQL_HOST=mariadb
39+
- MYSQL_DATABASE=pdns_db
40+
- MYSQL_USER=pdns_user
41+
- MYSQL_PASSWORD=pdns_pass
42+
43+
- PDNS_ALLOW_AXFR_IPS=127.0.0.1/32, 172.17.0.1/32
44+
- PDNS_MASTER=yes
45+
- PDNS_SLAVE=yes
46+
- PDNS_CACHE_TTL=20
47+
- PDNS_DISTRIBUTOR_THREADS=3
48+
- PDNS_ALLOW_DNSUPDATE_FROM=127.0.0.1/32, 172.17.0.33/23
49+
50+
- PDNS_WEBSERVER_ENABLE=yes
51+
- PDNS_WEBSERVER_IP=0.0.0.0
52+
- PDNS_WEBSERVER_ALLOW_FROM=127.0.0.1/32, 172.17.0.1/32
53+
- PDNS_WEBSERVER_PASSWORD=adminpass
54+
- PDNS_WEBSERVER_PORT=8080
55+
- PDNS_WEBSERVER_API_ENABLE=no
56+
- PDNS_WEBSERVER_API_KEY=adminapikey
57+
58+
- POWERADMIN_HOSTMASTER=email.admmin.soa
59+
- POWERADMIN_IFACE_STYLE=spark
60+
- POWERADMIN_IFACE_LANG=ru_RU
61+
- POWERADMIN_NS1=ns1.example.com
62+
- POWERADMIN_NS2=ns2.example.com
63+
depends_on:
64+
- mariadb
65+
ports:
66+
- 80:80/TCP
67+
- 8080:8080/TCP
68+
- 53:53/TCP
69+
- 53:53/UDP

0 commit comments

Comments
 (0)