-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile.ruby34-test
More file actions
66 lines (55 loc) · 2.4 KB
/
Copy pathDockerfile.ruby34-test
File metadata and controls
66 lines (55 loc) · 2.4 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
FROM ruby:3.4-bullseye
WORKDIR /app
ENV RUBY_VERSION 3.4.9
ENV RUBY_MAJOR_VERSION 3.4.0
ENV BUNDLER_VERSION_ 2.6.2
ENV DOCKERIZE_VERSION 0.5.0
ENV DOCKERIZE_URL https://github.com/jwilder/dockerize/releases/download/v${DOCKERIZE_VERSION}/dockerize-linux-amd64-v${DOCKERIZE_VERSION}.tar.gz
ENV RACK_ENV development
ENV BUNDLE_PATH="/bundle"
ENV BUNDLE_BIN="$BUNDLE_PATH/ruby/$RUBY_MAJOR_VERSION/bin"
ENV BUNDLE_SILENCE_ROOT_WARNING=0
ENV BUNDLE_APP_CONFIG="/etna/.bundle"
ENV BUNDLE_GEMFILE="/etna/Gemfile"
ENV PATH "/app/bin:/etna/node_modules/.bin:/app/node_modules/.bin:$BUNDLE_BIN:$PATH"
RUN apt-get update \
&& apt-get install -y \
libpq-dev \
postgresql-client \
libvips \
libvips-dev \
libcurl4-openssl-dev \
libssl-dev \
rsync \
sshpass \
sqlite3 \
--no-install-recommends \
&& rm -rf /var/lib/apt/lists/*
RUN curl -o /tmp/dockerize.tgz -L $DOCKERIZE_URL && ( cd /usr/bin && tar xzf /tmp/dockerize.tgz )
RUN gem install bundler -v "=$BUNDLER_VERSION_"
ENV GEM_HOME="$BUNDLE_PATH"
ENV GEM_PATH="/root/.gem/ruby/$RUBY_MAJOR_VERSION:/usr/local/lib/ruby/gems/$RUBY_MAJOR_VERSION:/usr/local/bundle:$BUNDLE_PATH/ruby/$RUBY_MAJOR_VERSION"
# Copy entrypoints from the dev base image directory
COPY docker/etna-base-dev/entrypoints /entrypoints
# Copy only dependency inputs first so Docker can cache native gem builds.
# The local etna path gem needs its gemspec, lib files, extensions, and completion files.
COPY etna/Gemfile etna/Gemfile.lock etna/etna.gemspec /etna/
COPY etna/lib /etna/lib
COPY etna/ext /etna/ext
COPY etna/*.completion /etna/
# Install all gems with detailed logging so long-running steps are visible.
RUN bash -lc 'set -euo pipefail; \
echo "[bundle] start: $(date -u +%Y-%m-%dT%H:%M:%SZ)"; \
echo "[bundle] ruby: $(ruby -v)"; \
echo "[bundle] bundler: $(bundle -v)"; \
echo "[bundle] gem source(s):"; \
bundle config get source || true; \
echo "[bundle] lock platforms:"; \
ruby -e "lock = File.read(\"/etna/Gemfile.lock\"); puts(lock[/PLATFORMS\\n(.*?)\\n\\n/m, 1] || \"(missing)\")"; \
echo "[bundle] install begin"; \
time bundle install -j 6 --verbose; \
echo "[bundle] install done: $(date -u +%Y-%m-%dT%H:%M:%SZ)"'
# Copy the rest of the etna source after bundle install so app code changes do not
# force recompilation of native gems like curb.
COPY etna /etna
RUN mkdir -p /app/tmp/pids /app/public/js /app/public/css /app/log /app/data /tmp/metrics.prom