Skip to content

Commit 9a5c095

Browse files
committed
renewed attempt at dockerization
1 parent 2956a35 commit 9a5c095

File tree

7 files changed

+149
-409
lines changed

7 files changed

+149
-409
lines changed

Dockerfile

Lines changed: 86 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,87 @@
1-
FROM mozillabteam/bmo-perl-slim:20200505.1
2-
3-
ENV DEBIAN_FRONTEND noninteractive
4-
5-
ARG CI
6-
ARG CIRCLE_SHA1
7-
ARG CIRCLE_BUILD_URL
8-
9-
ENV CI=${CI}
10-
ENV CIRCLE_BUILD_URL=${CIRCLE_BUILD_URL}
11-
ENV CIRCLE_SHA1=${CIRCLE_SHA1}
12-
13-
ENV LOG4PERL_CONFIG_FILE=log4perl-json.conf
14-
15-
RUN apt-get install -y rsync
16-
17-
# we run a loopback logging server on this TCP port.
18-
ENV LOGGING_PORT=5880
19-
20-
ENV LOCALCONFIG_ENV=1
21-
1+
# This file is generated by Dockerfile.PL. Do not edit directly.
2+
FROM perl:5.36.0-slim AS builder
223
WORKDIR /app
23-
24-
COPY . /app
25-
26-
RUN chown -R app.app /app && \
27-
perl -I/app -I/app/local/lib/perl5 -c -E 'use Bugzilla; BEGIN { Bugzilla->extensions }' && \
28-
perl -c /app/scripts/entrypoint.pl
29-
30-
USER app
31-
32-
RUN perl checksetup.pl --no-database --default-localconfig && \
33-
rm -rf /app/data /app/localconfig && \
34-
mkdir /app/data
35-
36-
EXPOSE 8000
37-
38-
ENTRYPOINT ["/app/scripts/entrypoint.pl"]
39-
CMD ["httpd"]
4+
COPY Makefile.PL gen-cpanfile.pl Bugzilla.pm /app/
5+
COPY extensions/LimitedEmail/Config.pm /app/extensions/LimitedEmail/Config.pm
6+
COPY extensions/LimitedEmail/disabled /app/extensions/LimitedEmail/disabled
7+
COPY extensions/AntiSpam/Config.pm /app/extensions/AntiSpam/Config.pm
8+
COPY extensions/AntiSpam/lib/Config.pm /app/extensions/AntiSpam/lib/Config.pm
9+
COPY extensions/TypeSniffer/Config.pm /app/extensions/TypeSniffer/Config.pm
10+
COPY extensions/Ember/Config.pm /app/extensions/Ember/Config.pm
11+
COPY extensions/Ember/disabled /app/extensions/Ember/disabled
12+
COPY extensions/RestrictComments/Config.pm /app/extensions/RestrictComments/Config.pm
13+
COPY extensions/RestrictComments/lib/Config.pm /app/extensions/RestrictComments/lib/Config.pm
14+
COPY extensions/ShadowBugs/Config.pm /app/extensions/ShadowBugs/Config.pm
15+
COPY extensions/ShadowBugs/disabled /app/extensions/ShadowBugs/disabled
16+
COPY extensions/Review/Config.pm /app/extensions/Review/Config.pm
17+
COPY extensions/TagNewUsers/Config.pm /app/extensions/TagNewUsers/Config.pm
18+
COPY extensions/FlagDefaultRequestee/Config.pm /app/extensions/FlagDefaultRequestee/Config.pm
19+
COPY extensions/Push/Config.pm /app/extensions/Push/Config.pm
20+
COPY extensions/Push/lib/Config.pm /app/extensions/Push/lib/Config.pm
21+
COPY extensions/OpenGraph/Config.pm /app/extensions/OpenGraph/Config.pm
22+
COPY extensions/OpenGraph/lib/Config.pm /app/extensions/OpenGraph/lib/Config.pm
23+
COPY extensions/GitHubAuth/Config.pm /app/extensions/GitHubAuth/Config.pm
24+
COPY extensions/GitHubAuth/lib/Config.pm /app/extensions/GitHubAuth/lib/Config.pm
25+
COPY extensions/ContributorEngagement/Config.pm /app/extensions/ContributorEngagement/Config.pm
26+
COPY extensions/BugmailFilter/Config.pm /app/extensions/BugmailFilter/Config.pm
27+
COPY extensions/EditTable/Config.pm /app/extensions/EditTable/Config.pm
28+
COPY extensions/Profanivore/Config.pm /app/extensions/Profanivore/Config.pm
29+
COPY extensions/EditComments/Config.pm /app/extensions/EditComments/Config.pm
30+
COPY extensions/BzAPI/Config.pm /app/extensions/BzAPI/Config.pm
31+
COPY extensions/SecureMail/Config.pm /app/extensions/SecureMail/Config.pm
32+
COPY extensions/SecureMail/disabled /app/extensions/SecureMail/disabled
33+
COPY extensions/BugModal/Config.pm /app/extensions/BugModal/Config.pm
34+
COPY extensions/InlineHistory/Config.pm /app/extensions/InlineHistory/Config.pm
35+
COPY extensions/Bitly/Config.pm /app/extensions/Bitly/Config.pm
36+
COPY extensions/OrangeFactor/Config.pm /app/extensions/OrangeFactor/Config.pm
37+
COPY extensions/UserStory/Config.pm /app/extensions/UserStory/Config.pm
38+
COPY extensions/FlagTypeComment/Config.pm /app/extensions/FlagTypeComment/Config.pm
39+
COPY extensions/SiteMapIndex/Config.pm /app/extensions/SiteMapIndex/Config.pm
40+
COPY extensions/Gravatar/Config.pm /app/extensions/Gravatar/Config.pm
41+
COPY extensions/BMO/Config.pm /app/extensions/BMO/Config.pm
42+
COPY extensions/MozProjectReview/Config.pm /app/extensions/MozProjectReview/Config.pm
43+
COPY extensions/RequestNagger/Config.pm /app/extensions/RequestNagger/Config.pm
44+
COPY extensions/Splinter/Config.pm /app/extensions/Splinter/Config.pm
45+
COPY extensions/Splinter/lib/Config.pm /app/extensions/Splinter/lib/Config.pm
46+
COPY extensions/UserProfile/Config.pm /app/extensions/UserProfile/Config.pm
47+
COPY extensions/Voting/Config.pm /app/extensions/Voting/Config.pm
48+
COPY extensions/GoogleAnalytics/Config.pm /app/extensions/GoogleAnalytics/Config.pm
49+
COPY extensions/GoogleAnalytics/lib/Config.pm /app/extensions/GoogleAnalytics/lib/Config.pm
50+
COPY extensions/Example/Config.pm /app/extensions/Example/Config.pm
51+
COPY extensions/Example/disabled /app/extensions/Example/disabled
52+
COPY extensions/Example/lib/Config.pm /app/extensions/Example/lib/Config.pm
53+
COPY extensions/MyDashboard/Config.pm /app/extensions/MyDashboard/Config.pm
54+
COPY extensions/Needinfo/Config.pm /app/extensions/Needinfo/Config.pm
55+
COPY extensions/LastResolved/Config.pm /app/extensions/LastResolved/Config.pm
56+
COPY extensions/GuidedBugEntry/Config.pm /app/extensions/GuidedBugEntry/Config.pm
57+
COPY extensions/PhabBugz/Config.pm /app/extensions/PhabBugz/Config.pm
58+
COPY extensions/PhabBugz/lib/Config.pm /app/extensions/PhabBugz/lib/Config.pm
59+
COPY extensions/REMO/Config.pm /app/extensions/REMO/Config.pm
60+
COPY extensions/ZPushNotify/Config.pm /app/extensions/ZPushNotify/Config.pm
61+
COPY extensions/ProdCompSearch/Config.pm /app/extensions/ProdCompSearch/Config.pm
62+
COPY extensions/TrackingFlags/Config.pm /app/extensions/TrackingFlags/Config.pm
63+
COPY extensions/ComponentWatching/Config.pm /app/extensions/ComponentWatching/Config.pm
64+
COPY extensions/Webhooks/Config.pm /app/extensions/Webhooks/Config.pm
65+
COPY extensions/Webhooks/lib/Config.pm /app/extensions/Webhooks/lib/Config.pm
66+
COPY extensions/OldBugMove/Config.pm /app/extensions/OldBugMove/Config.pm
67+
COPY extensions/OldBugMove/disabled /app/extensions/OldBugMove/disabled
68+
RUN perl Makefile.PL && \
69+
cpanm --notest Module::CPANfile && \
70+
make cpanfile && \
71+
cpanm --notest App::cpm && \
72+
apt-get update -y && \
73+
apt-get install -y libssl-dev libxml2-dev libexpat1-dev build-essential && \
74+
apt-get install -y default-libmysqlclient-dev && \
75+
cpm install --show-build-log-on-failure && \
76+
apt-get install -y apt-file && \
77+
apt-file update && \
78+
find local/lib -name '*.so' -exec ldd {} \; | awk '/=>/ {print $3}'|sort -u |xargs -IFILENAME apt-file search FILENAME | awk -F': ' '{print $1}'|sort -u > PACKAGES;
79+
FROM perl:5.36.0-slim
80+
WORKDIR /app
81+
COPY --from=builder /app/PACKAGES /app/PACKAGES
82+
RUN apt-get update -y && apt-get install -y $(cat PACKAGES)
83+
COPY --from=builder /app/local /app/local
84+
COPY ./ /app/
85+
env LOCALCONFIG_ENV 1
86+
ENTRYPOINT ["perl", "bugzilla.pl"]
87+
CMD ["daemon"]

Dockerfile.PL

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#!/usr/bin/env perl
2+
use 5.10.1;
3+
use File::Find;
4+
use experimental 'signatures';
5+
use autodie;
6+
7+
my $output = shift @ARGV || 'Dockerfile';
8+
9+
open my $fh, '>', $output;
10+
11+
say $fh "# This file is generated by Dockerfile.PL. Do not edit directly.";
12+
say $fh q{FROM perl:5.36.0-slim AS builder};
13+
say $fh q{WORKDIR /app};
14+
say $fh q{COPY Makefile.PL gen-cpanfile.pl Bugzilla.pm /app/};
15+
16+
find_extensions($fh);
17+
18+
RUN(q{
19+
perl Makefile.PL &&
20+
cpanm --notest Module::CPANfile &&
21+
make cpanfile &&
22+
cpanm --notest App::cpm &&
23+
apt-get update -y &&
24+
apt-get install -y libssl-dev libxml2-dev libexpat1-dev build-essential &&
25+
apt-get install -y default-libmysqlclient-dev &&
26+
cpm install --show-build-log-on-failure &&
27+
apt-get install -y apt-file &&
28+
apt-file update &&
29+
find local/lib -name '*.so' -exec ldd {} \; | awk '/=>/ {print $3}'|sort -u |xargs -IFILENAME apt-file search FILENAME | awk -F': ' '{print $1}'|sort -u > PACKAGES;
30+
});
31+
32+
say $fh q{FROM perl:5.36.0-slim};
33+
say $fh q{WORKDIR /app};
34+
say $fh q{COPY --from=builder /app/PACKAGES /app/PACKAGES};
35+
say $fh q{RUN apt-get update -y && apt-get install -y $(cat PACKAGES) };
36+
# several lines should be merged together, and we need to make sure to clean up
37+
# the apt package cache after installing packages to maintain a small image size
38+
say $fh q{COPY --from=builder /app/local /app/local};
39+
say $fh q{COPY ./ /app/};
40+
41+
say $fh q{env LOCALCONFIG_ENV 1};
42+
say $fh q{ENTRYPOINT ["perl", "bugzilla.pl"]};
43+
say $fh q{CMD ["daemon"]};
44+
45+
sub find_extensions($fh) {
46+
find(
47+
sub {
48+
return unless -f;
49+
return unless $_ eq 'Config.pm' or $_ eq 'disabled';
50+
my $path = $File::Find::name;
51+
say $fh "COPY $path /app/$path";
52+
},
53+
'extensions',
54+
);
55+
}
56+
57+
sub RUN($cmd) {
58+
# trim leading whitespace and trailing whitespace
59+
$cmd =~ s/^\s+|\s+$//g;
60+
# escape newlines for Dockerfile
61+
$cmd =~ s/\n/ \\\n/gs;
62+
say $fh "RUN $cmd";
63+
}

Dockerfile.bmo-slim

Lines changed: 0 additions & 53 deletions
This file was deleted.

Dockerfile.cpanfile

Lines changed: 0 additions & 19 deletions
This file was deleted.

cpanfile

Lines changed: 0 additions & 111 deletions
This file was deleted.

0 commit comments

Comments
 (0)