-
Notifications
You must be signed in to change notification settings - Fork 112
Expand file tree
/
Copy pathDockerfile.debian
More file actions
81 lines (71 loc) · 2.71 KB
/
Copy pathDockerfile.debian
File metadata and controls
81 lines (71 loc) · 2.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
FROM ruby:3.4.10 AS base
FROM base AS base-amd64
ENV SUPERCRONIC_SHA1SUM=712d2ece75da6f6e530192a151488578153e4e96
FROM base AS base-arm64
ENV SUPERCRONIC_SHA1SUM=93323899ddca3f1198f1796a4bf4418ed1e7982e
FROM base AS base-arm
ENV SUPERCRONIC_SHA1SUM=dcc8535b46bd9752fbbe177fddd7f6f0451da9a4
# Supercronic - use base-$TARGETARCH to select correct base image SUPERCRONIC_SHA1SUM
ARG TARGETARCH
FROM base-$TARGETARCH AS pb-dev
# Install Supercronic
ARG TARGETARCH
ENV SUPERCRONIC_URL=https://github.com/aptible/supercronic/releases/download/v0.2.47/supercronic-linux-${TARGETARCH} \
SUPERCRONIC=supercronic-linux-${TARGETARCH}
RUN wget "$SUPERCRONIC_URL" \
&& echo "${SUPERCRONIC_SHA1SUM} ${SUPERCRONIC}" | sha1sum -c - \
&& chmod +x "$SUPERCRONIC" \
&& mv "$SUPERCRONIC" "/usr/local/bin/${SUPERCRONIC}" \
&& ln -s "/usr/local/bin/${SUPERCRONIC}" /usr/local/bin/supercronic
# Installation path
ENV HOME=/pact_broker
# Setup ruby user & install application dependencies
RUN set -ex && \
useradd -d $HOME -m -s /bin/false -r -g root ruby && \
chmod g+w $HOME
# Install Gems
WORKDIR $HOME
COPY pact_broker/Gemfile pact_broker/Gemfile.lock $HOME/
RUN cat Gemfile.lock | grep -A1 "BUNDLED WITH" | tail -n1 | awk '{print $1}' > BUNDLER_VERSION
RUN set -ex && \
apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
dnsutils \
g++ \
gcc \
git \
libc6-dev \
libpq-dev \
libsqlite3-dev \
libyaml-dev \
make && \
gem install bundler -v $(cat BUNDLER_VERSION) && \
bundle config set deployment 'true' && \
bundle config set no-cache 'true' && \
bundle config set without 'development test' && \
bundle install && \
rm -rf vendor/bundle/ruby/*/cache .bundle/cache && \
find $HOME/vendor/bundle /usr/local/lib/ruby/gems \
\( -name Gemfile.lock -o -name package-lock.json \) -exec rm -rf {} + && \
find $HOME/vendor/bundle /usr/local/lib/ruby/gems \
\( -name *.pem -o -name *.key -o -name *.java -o -name *.jar \) | \
grep -e sample -e test -e spec | xargs rm -rf {} + && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# Install source
COPY pact_broker $HOME/
RUN mv $HOME/clean.sh /usr/local/bin/clean
RUN ln -s /pact_broker/script/db-migrate.sh /usr/local/bin/db-migrate
RUN ln -s /pact_broker/script/db-version.sh /usr/local/bin/db-version
# Hide pattern matching warnings
ENV RUBYOPT="-W:no-experimental"
# Start Puma
ENV RACK_ENV=production
ENV PACT_BROKER_DATABASE_CLEAN_ENABLED=false
ENV PACT_BROKER_DATABASE_CLEAN_CRON_SCHEDULE="15 2 * * *"
ENV PACT_BROKER_DATABASE_CLEAN_DELETION_LIMIT=500
ENV PACT_BROKER_DATABASE_CLEAN_OVERWRITTEN_DATA_MAX_AGE=7
ENV PACT_BROKER_DATABASE_CLEAN_DRY_RUN=false
USER ruby
ENTRYPOINT ["sh", "./entrypoint.sh"]
CMD ["config.ru"]