1
1
ARG RUBY_VER="3.3"
2
2
FROM ruby:$RUBY_VER-alpine AS build-env
3
3
4
- ARG PACKAGES="git libxml2 libxslt build-base curl-dev libxml2-dev libxslt-dev zlib-dev tzdata libpq-dev"
4
+ ARG PACKAGES="git libxml2 libxslt build-base curl-dev libxml2-dev libxslt-dev zlib-dev tzdata libpq-dev yaml-dev "
5
5
6
6
RUN apk update && \
7
7
apk upgrade && \
8
8
apk add --update --no-cache $PACKAGES && \
9
9
cp /usr/share/zoneinfo/Australia/Sydney /etc/localtime && \
10
10
echo "Australia/Sydney" > /etc/timezone
11
11
12
- ENV APP_DIR /app
12
+ ENV APP_DIR= " /app"
13
13
RUN mkdir $APP_DIR
14
14
WORKDIR $APP_DIR
15
15
@@ -19,9 +19,10 @@ COPY Gemfile* $APP_DIR/
19
19
RUN gem install bundler
20
20
RUN bundle config set without 'test:assets'
21
21
RUN bundle config set --local path 'vendor/bundle'
22
+ RUN bundle config set --local without 'test development'
22
23
RUN bundle config --global frozen 1 \
23
24
&& bundle install -j4 --retry 3 \
24
- && bundle binstubs puma --force \
25
+ && bundle binstubs bundler puma --force \
25
26
# Remove unneeded files (cached *.gem, *.o, *.c)
26
27
&& rm -rf vendor/bundle/ruby/3.3.0/cache/*.gem \
27
28
&& find vendor/bundle/ruby/3.3.0/gems/ -name "*.c" -delete \
@@ -35,36 +36,32 @@ RUN rm -rf /app/tmp/pids/ && rm -rf /app/spec
35
36
36
37
FROM ruby:$RUBY_VER-alpine
37
38
38
- # Copy just the application to this new image
39
- ENV APP_DIR /app
39
+ # Copy the application and bundled gems
40
+ ENV APP_DIR= " /app"
40
41
COPY --from=build-env $APP_DIR $APP_DIR
41
42
WORKDIR $APP_DIR
42
43
43
44
ENV BUNDLE_APP_CONFIG="$APP_DIR/.bundle"
44
45
45
- # install packages
46
- ARG PACKAGES="tzdata libxml2 libxslt libc6-compat libpq-dev"
46
+ # Install runtime packages
47
+ ARG PACKAGES="tzdata libxml2 libxslt libc6-compat libpq-dev yaml-dev "
47
48
RUN apk update \
48
49
&& apk upgrade \
49
50
&& apk add --update --no-cache $PACKAGES
50
51
51
52
# Create a non-privileged user
52
- # defaults are appuser:10001
53
53
ARG IMAGE_UID="10001"
54
54
ENV UID=$IMAGE_UID
55
55
ENV USER=appuser
56
56
57
- # See https://stackoverflow.com/a/55757473/12429735RUN
58
57
RUN adduser -D -g "" -h "/nonexistent" -s "/sbin/nologin" -H -u "${UID}" "${USER}"
59
58
RUN chown appuser:appuser -R /app/tmp
60
-
61
- # NOTE:: this should not be used, instead use `RAILS_MASTER_KEY` env var
62
59
RUN chown appuser:appuser -R /app/config/
63
- RUN bundle binstubs bundler --force
60
+ RUN chown appuser:appuser -R /app/vendor/ bundle # Ensure appuser owns the gems
64
61
65
- # Use an unprivileged user.
62
+ # Use the unprivileged user
66
63
USER appuser:appuser
67
64
68
65
EXPOSE 8080
69
- HEALTHCHECK CMD wget --no-verbose -q --spider http://0.0.0.0:8080/auth/authority?health=true
70
- ENTRYPOINT ./bin/puma -b tcp://0.0.0.0:8080
66
+ HEALTHCHECK CMD [ " wget" , " --no-verbose" , "-q" , " --spider" , " http://0.0.0.0:8080/auth/authority?health=true" ]
67
+ ENTRYPOINT [ " ./bin/puma" , "-b" , " tcp://0.0.0.0:8080" ]
0 commit comments