-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile.base
More file actions
51 lines (46 loc) · 1.94 KB
/
Dockerfile.base
File metadata and controls
51 lines (46 loc) · 1.94 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
ARG RUBY_VERSION=3.4.1
ARG RUBY_BASE=docker.io/library/ruby
ARG RUBY_TAG=${RUBY_VERSION}-slim
FROM ${RUBY_BASE}:${RUBY_TAG}
ARG IMAGEMAGICK_VERSION=7.1.1-32
ARG IMAGEMAGICK_SHA256
# Install base packages (include build tools so dev gems can compile in compose)
RUN apt-get update -qq && \
apt-get install --no-install-recommends -y \
curl libjemalloc2 libvips sqlite3 ca-certificates \
nodejs npm chromium \
# IM7 build deps and image format libraries
build-essential pkg-config \
libjpeg-dev libpng-dev libtiff-dev libwebp-dev \
libheif-dev libopenjp2-7-dev liblcms2-dev libfreetype6-dev \
libxml2-dev libfontconfig1-dev \
fonts-noto fonts-noto-color-emoji fonts-liberation \
git && \
rm -rf /var/lib/apt/lists /var/cache/apt/archives && \
# Build and install ImageMagick 7 from source to guarantee `magick` CLI
set -eux; \
tmpdir="$(mktemp -d)"; \
curl -fsSL "https://github.com/ImageMagick/ImageMagick/archive/refs/tags/${IMAGEMAGICK_VERSION}.tar.gz" -o "$tmpdir/ImageMagick.tar.gz"; \
if [ -n "${IMAGEMAGICK_SHA256:-}" ]; then echo "${IMAGEMAGICK_SHA256} $tmpdir/ImageMagick.tar.gz" | sha256sum -c -; fi; \
tar -xzf "$tmpdir/ImageMagick.tar.gz" -C "$tmpdir"; \
cd "$tmpdir"/ImageMagick-${IMAGEMAGICK_VERSION}; \
./configure --disable-docs; \
make -j"$(nproc)"; \
make install; \
ldconfig; \
# Smoke test: ensure ImageMagick works at runtime
magick -version >/dev/null 2>&1; \
magick -size 1x1 xc:white /tmp/im7-ok.png; \
test -s /tmp/im7-ok.png; \
cd /; rm -rf "$tmpdir"
# Set production environment
ENV RAILS_ENV="production" \
NODE_ENV="production" \
RAILS_LOG_TO_STDOUT="1" \
RAILS_SERVE_STATIC_FILES="true" \
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD="1" \
PUPPETEER_EXECUTABLE_PATH="/usr/bin/chromium" \
IMAGE_OPT_VIPS="1" \
BUNDLE_DEPLOYMENT="1" \
BUNDLE_PATH="/usr/local/bundle" \
BUNDLE_WITHOUT="development:test"