109 lines
2.9 KiB
Docker
109 lines
2.9 KiB
Docker
|
|
FROM zonemaster/cli:local AS build
|
||
|
|
|
||
|
|
ARG version
|
||
|
|
|
||
|
|
USER root
|
||
|
|
|
||
|
|
RUN apk add --no-cache \
|
||
|
|
make \
|
||
|
|
curl \
|
||
|
|
gcc \
|
||
|
|
perl-dev \
|
||
|
|
musl-dev \
|
||
|
|
perl-app-cpanminus
|
||
|
|
|
||
|
|
RUN apk add --no-cache \
|
||
|
|
jq \
|
||
|
|
perl-class-method-modifiers \
|
||
|
|
perl-config-inifiles \
|
||
|
|
perl-dbd-sqlite \
|
||
|
|
perl-dbi \
|
||
|
|
perl-file-share \
|
||
|
|
perl-file-slurp \
|
||
|
|
perl-html-parser \
|
||
|
|
perl-http-parser-xs \
|
||
|
|
perl-mojolicious \
|
||
|
|
perl-io-stringy \
|
||
|
|
perl-log-any \
|
||
|
|
perl-log-dispatch \
|
||
|
|
perl-moose \
|
||
|
|
perl-parallel-forkmanager \
|
||
|
|
perl-plack \
|
||
|
|
perl-role-tiny \
|
||
|
|
perl-test-nowarnings \
|
||
|
|
perl-test-differences \
|
||
|
|
perl-test-exception \
|
||
|
|
perl-try-tiny \
|
||
|
|
perl-doc
|
||
|
|
|
||
|
|
# for METRIC
|
||
|
|
RUN cpanm --notest --no-wget --from https://cpan.metacpan.org/ \
|
||
|
|
Net::Statsd
|
||
|
|
|
||
|
|
COPY ./Zonemaster-Backend-${version}.tar.gz ./Zonemaster-Backend-${version}.tar.gz
|
||
|
|
|
||
|
|
RUN cpanm --notest --no-wget --from https://cpan.metacpan.org \
|
||
|
|
./Zonemaster-Backend-${version}.tar.gz
|
||
|
|
|
||
|
|
|
||
|
|
FROM zonemaster/cli:local
|
||
|
|
USER root
|
||
|
|
|
||
|
|
COPY --from=build /usr/local/share/perl5 /usr/local/share/perl5
|
||
|
|
COPY --from=build /usr/local/bin/ /usr/local/bin/
|
||
|
|
COPY --from=build /usr/lib/perl5 /usr/lib/perl5
|
||
|
|
|
||
|
|
RUN apk add --no-cache \
|
||
|
|
jq \
|
||
|
|
perl-config-inifiles \
|
||
|
|
perl-mojolicious \
|
||
|
|
perl-moose \
|
||
|
|
perl-dbi \
|
||
|
|
perl-dbd-sqlite \
|
||
|
|
perl-plack \
|
||
|
|
perl-parallel-forkmanager
|
||
|
|
|
||
|
|
# Create zonemaster user and group
|
||
|
|
RUN addgroup -S zonemaster
|
||
|
|
RUN adduser -S zonemaster -G zonemaster
|
||
|
|
|
||
|
|
RUN cd `perl -MFile::ShareDir=dist_dir -E 'say dist_dir("Zonemaster-Backend")'` && \
|
||
|
|
install -v -m 755 -d /etc/zonemaster && \
|
||
|
|
install -v -m 775 -g zonemaster -d /var/log/zonemaster && \
|
||
|
|
install -v -m 640 -g zonemaster ./backend_config.ini /etc/zonemaster/
|
||
|
|
|
||
|
|
|
||
|
|
# Init SQLite database
|
||
|
|
RUN install -v -m 755 -o zonemaster -g zonemaster -d /var/lib/zonemaster
|
||
|
|
USER zonemaster
|
||
|
|
RUN $(perl -MFile::ShareDir -le 'print File::ShareDir::dist_dir("Zonemaster-Backend")')/create_db.pl
|
||
|
|
USER zonemaster
|
||
|
|
COPY zonemaster_launch /usr/local/bin
|
||
|
|
|
||
|
|
USER root
|
||
|
|
ARG S6_OVERLAY_VERSION=3.2.1.0
|
||
|
|
|
||
|
|
# Install S6
|
||
|
|
ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz /tmp
|
||
|
|
RUN tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz
|
||
|
|
ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-x86_64.tar.xz /tmp
|
||
|
|
RUN tar -C / -Jxpf /tmp/s6-overlay-x86_64.tar.xz
|
||
|
|
|
||
|
|
|
||
|
|
# RPCAPI service
|
||
|
|
RUN mkdir /etc/s6-overlay/s6-rc.d/rpcapi
|
||
|
|
RUN echo "longrun" > /etc/s6-overlay/s6-rc.d/rpcapi/type
|
||
|
|
RUN echo "#!/command/with-contenv sh" > /etc/s6-overlay/s6-rc.d/rpcapi/run
|
||
|
|
RUN echo "zonemaster_launch rpcapi" >> /etc/s6-overlay/s6-rc.d/rpcapi/run
|
||
|
|
|
||
|
|
# TESTAGENT sevice
|
||
|
|
RUN mkdir /etc/s6-overlay/s6-rc.d/testagent
|
||
|
|
RUN echo "longrun" > /etc/s6-overlay/s6-rc.d/testagent/type
|
||
|
|
RUN echo "#!/command/with-contenv sh" > /etc/s6-overlay/s6-rc.d/testagent/run
|
||
|
|
RUN echo "zonemaster_launch testagent" >> /etc/s6-overlay/s6-rc.d/testagent/run
|
||
|
|
|
||
|
|
RUN touch /etc/s6-overlay/s6-rc.d/user/contents.d/rpcapi
|
||
|
|
RUN touch /etc/s6-overlay/s6-rc.d/user/contents.d/testagent
|
||
|
|
|
||
|
|
ENTRYPOINT ["/usr/local/bin/zonemaster_launch"]
|