Skip to content

Commit 77ddcec

Browse files
committed
Dockerfiles: Upgrade Ubuntu base image & Go version
Reduces the number of layers by combining commands and env variables.
1 parent 7637cb8 commit 77ddcec

File tree

7 files changed

+208
-239
lines changed

7 files changed

+208
-239
lines changed

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM photoprism/development:20210422
1+
FROM photoprism/development:20210515
22

33
# Set up project directory
44
WORKDIR "/go/src/github.com/photoprism/photoprism"

Makefile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ clean:
165165
rm -rf storage/cache
166166
rm -rf frontend/node_modules
167167
docker-development:
168-
docker pull ubuntu:20.10
168+
docker pull ubuntu:21.04
169169
scripts/docker-build.sh development $(DOCKER_TAG)
170170
scripts/docker-push.sh development $(DOCKER_TAG)
171171
docker-photoprism:
@@ -179,14 +179,14 @@ docker-photoprism-local:
179179
docker-photoprism-pull:
180180
docker pull photoprism/photoprism:latest
181181
docker-photoprism-arm64-preview:
182-
docker pull ubuntu:20.10
182+
docker pull ubuntu:21.04
183183
scripts/docker-build.sh photoprism-arm64
184184
scripts/docker-push.sh photoprism-arm64
185185
docker-photoprism-arm64:
186186
scripts/docker-build.sh photoprism-arm64 $(DOCKER_TAG)
187187
scripts/docker-push.sh photoprism-arm64 $(DOCKER_TAG)
188188
docker-photoprism-arm32-preview:
189-
docker pull ubuntu:20.10
189+
docker pull ubuntu:21.04
190190
scripts/docker-build.sh photoprism-arm32
191191
scripts/docker-push.sh photoprism-arm32
192192
docker-photoprism-arm32:

docker/demo/Dockerfile

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,29 @@
11
FROM photoprism/photoprism:preview as build
22

3-
# Hide TensorFlow warnings
4-
ENV TF_CPP_MIN_LOG_LEVEL 2
3+
# Set environment variables
4+
ENV TF_CPP_MIN_LOG_LEVEL=2 \
5+
PHOTOPRISM_STORAGE_PATH="/photoprism/storage" \
6+
PHOTOPRISM_DEBUG="false" \
7+
PHOTOPRISM_READONLY="false" \
8+
PHOTOPRISM_PUBLIC="true" \
9+
HOTOPRISM_DEMO="true" \
10+
PHOTOPRISM_EXPERIMENTAL="true" \
11+
PHOTOPRISM_UPLOAD_NSFW="false" \
12+
PHOTOPRISM_DETECT_NSFW="false" \
13+
PHOTOPRISM_THUMB_FILTER="lanczos" \
14+
PHOTOPRISM_THUMB_UNCACHED="true" \
15+
PHOTOPRISM_THUMB_SIZE=4096 \
16+
PHOTOPRISM_THUMB_SIZE_UNCACHED=4096 \
17+
PHOTOPRISM_JPEG_SIZE=4096 \
18+
PHOTOPRISM_JPEG_QUALITY=95 \
19+
PHOTOPRISM_SITE_CAPTION="Demo"
520

621
# Copy assets
722
COPY /docker/demo/index.tmpl /photoprism/assets/templates
823

924
# Download example photos
1025
RUN wget -qO- https://dl.photoprism.org/qa/demo.tar.gz | tar xvz -C /photoprism/originals
1126

12-
# Configure PhotoPrism
13-
ENV PHOTOPRISM_STORAGE_PATH /photoprism/storage
14-
ENV PHOTOPRISM_DEBUG false
15-
ENV PHOTOPRISM_READONLY false
16-
ENV PHOTOPRISM_PUBLIC true
17-
ENV PHOTOPRISM_DEMO true
18-
ENV PHOTOPRISM_EXPERIMENTAL true
19-
ENV PHOTOPRISM_UPLOAD_NSFW false
20-
ENV PHOTOPRISM_DETECT_NSFW false
21-
ENV PHOTOPRISM_THUMB_FILTER lanczos
22-
ENV PHOTOPRISM_THUMB_UNCACHED true
23-
ENV PHOTOPRISM_THUMB_SIZE 4096
24-
ENV PHOTOPRISM_THUMB_SIZE_UNCACHED 4096
25-
ENV PHOTOPRISM_JPEG_SIZE 4096
26-
ENV PHOTOPRISM_JPEG_QUALITY 95
27-
ENV PHOTOPRISM_SITE_CAPTION "Demo"
28-
2927
# Import example photos
3028
RUN photoprism restore -a
3129
RUN photoprism index

docker/development/Dockerfile

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,20 @@
1-
FROM ubuntu:20.10
1+
FROM ubuntu:21.04
22

33
LABEL maintainer="Michael Mayer <michael@liquidbytes.net>"
44

55
ARG BUILD_TAG
66

7-
ENV DEBIAN_FRONTEND noninteractive
7+
# Set environment variables
8+
ENV DEBIAN_FRONTEND="noninteractive" \
9+
LD_LIBRARY_PATH="/root/.local/lib:/usr/local/lib:/usr/lib:/lib" \
10+
TF_CPP_MIN_LOG_LEVEL="0" \
11+
NODE_ENV="production" \
12+
GOPATH="/go" \
13+
GOBIN="/go/bin" \
14+
PATH="/go/bin:/usr/local/go/bin:~/.local/bin:/root/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" \
15+
TMPDIR="/tmp" \
16+
GO111MODULE="on" \
17+
CGO_CFLAGS="-g -O2 -Wno-return-local-addr"
818

919
# Configure apt
1020
RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
@@ -70,12 +80,10 @@ RUN apt-get update && apt-get upgrade && \
7080
# We also have custom builds available:
7181
# https://dl.photoprism.org/tensorflow/linux/
7282
#
73-
ENV LD_LIBRARY_PATH /root/.local/lib:/usr/local/lib:/usr/lib:/lib
74-
ENV TF_CPP_MIN_LOG_LEVEL 0
7583
RUN curl -L \
7684
"https://dl.photoprism.org/tensorflow/linux/libtensorflow-linux-cpu-1.15.2.tar.gz" | \
77-
tar -C "/usr" -xz
78-
RUN ldconfig
85+
tar -C "/usr" -xz && \
86+
ldconfig
7987

8088
# Install NodeJS
8189
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -
@@ -85,36 +93,23 @@ RUN add-apt-repository -y ppa:saiarcot895/chromium-beta && \
8593
apt-get install chromium-browser chromium-codecs-ffmpeg-extra nodejs && \
8694
apt-get autoremove && \
8795
apt-get clean && \
88-
rm -rf /var/lib/apt/lists/*
96+
rm -rf /var/lib/apt/lists/* && \
97+
umask 0000
8998

90-
# Set default https://en.wikipedia.org/wiki/Umask
91-
RUN umask 0000
92-
93-
# Install and configure NodeJS Package Manager (npm)
94-
ENV NODE_ENV production
99+
# Install NodeJS & NPM
95100
RUN npm install --unsafe-perm=true --allow-root -g npm testcafe chromedriver && \
96101
npm config set cache ~/.cache/npm
97102

98103
# Install Go
99-
ENV GOLANG_VERSION 1.16.3
104+
ENV GOLANG_VERSION 1.16.4
100105
RUN set -eux; \
101-
\
102106
url="https://golang.org/dl/go${GOLANG_VERSION}.linux-amd64.tar.gz"; \
103107
wget -O go.tgz "$url"; \
104-
echo "951a3c7c6ce4e56ad883f97d9db74d3d6d80d5fec77455c6ada6c1f7ac4776d2 *go.tgz" | sha256sum -c -; \
108+
echo "7154e88f5a8047aad4b80ebace58a059e36e7e2e4eb3b383127a28c711b4ff59 *go.tgz" | sha256sum -c -; \
105109
tar -C /usr/local -xzf go.tgz; \
106110
rm go.tgz; \
107-
export PATH="/usr/local/go/bin:$PATH"; \
108111
go version
109-
110-
# Configure Go environment
111-
ENV GOPATH /go
112-
ENV GOBIN $GOPATH/bin
113-
ENV PATH $GOBIN:/usr/local/go/bin:~/.local/bin:/root/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
114-
ENV TMPDIR /tmp
115-
ENV GO111MODULE on
116-
ENV CGO_CFLAGS "-g -O2 -Wno-return-local-addr"
117-
RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH"
112+
RUN mkdir -p "/go/src" "/go/bin" && chmod -R 777 "/go"
118113

119114
# Download TensorFlow model and test files
120115
RUN rm -rf /tmp/* && mkdir -p /tmp/photoprism && \

docker/photoprism/Dockerfile

Lines changed: 49 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM photoprism/development:20210422 as build
1+
FROM photoprism/development:20210515 as build
22

33
# Set up project directory
44
WORKDIR "/go/src/github.com/photoprism/photoprism"
@@ -8,10 +8,56 @@ COPY . .
88
RUN make dep build-js install
99

1010
# Same base image as photoprism/development
11-
FROM ubuntu:20.10
11+
FROM ubuntu:21.04
1212

1313
# Set environment variables
14-
ENV DEBIAN_FRONTEND noninteractive
14+
# see https://docs.photoprism.org/getting-started/config-options/
15+
ENV DEBIAN_FRONTEND="noninteractive" \
16+
TF_CPP_MIN_LOG_LEVEL="2" \
17+
PATH="/photoprism/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" \
18+
TMPDIR="/tmp" \
19+
PHOTOPRISM_ASSETS_PATH="/photoprism/assets" \
20+
PHOTOPRISM_STORAGE_PATH="/photoprism/storage" \
21+
PHOTOPRISM_BACKUP_PATH="/var/lib/photoprism" \
22+
PHOTOPRISM_ORIGINALS_PATH="/photoprism/originals" \
23+
PHOTOPRISM_IMPORT_PATH="/photoprism/import" \
24+
PHOTOPRISM_LOG_FILENAME="/photoprism/photoprism.log" \
25+
PHOTOPRISM_PID_FILENAME="/photoprism/photoprism.pid" \
26+
PHOTOPRISM_DEBUG="false" \
27+
PHOTOPRISM_PUBLIC="false" \
28+
PHOTOPRISM_READONLY="false" \
29+
PHOTOPRISM_UPLOAD_NSFW="true" \
30+
PHOTOPRISM_DETECT_NSFW="false" \
31+
PHOTOPRISM_EXPERIMENTAL="false" \
32+
PHOTOPRISM_SITE_URL="http://localhost:2342/" \
33+
PHOTOPRISM_SITE_TITLE="PhotoPrism" \
34+
PHOTOPRISM_SITE_CAPTION="Browse Your Life" \
35+
PHOTOPRISM_SITE_DESCRIPTION="" \
36+
PHOTOPRISM_SITE_AUTHOR="" \
37+
PHOTOPRISM_HTTP_HOST="0.0.0.0" \
38+
PHOTOPRISM_HTTP_PORT=2342 \
39+
PHOTOPRISM_DATABASE_DRIVER="sqlite" \
40+
PHOTOPRISM_DATABASE_SERVER="" \
41+
PHOTOPRISM_DATABASE_NAME="photoprism" \
42+
PHOTOPRISM_DATABASE_USER="photoprism" \
43+
PHOTOPRISM_DATABASE_PASSWORD="" \
44+
PHOTOPRISM_DISABLE_WEBDAV="false" \
45+
PHOTOPRISM_DISABLE_SETTINGS="false" \
46+
PHOTOPRISM_DISABLE_BACKUPS="false" \
47+
PHOTOPRISM_DISABLE_EXIFTOOL="false" \
48+
PHOTOPRISM_DISABLE_PLACES="false" \
49+
PHOTOPRISM_DISABLE_TENSORFLOW="false" \
50+
PHOTOPRISM_DARKTABLE_PRESETS="false" \
51+
PHOTOPRISM_THUMB_FILTER="lanczos" \
52+
PHOTOPRISM_THUMB_UNCACHED="false" \
53+
PHOTOPRISM_THUMB_SIZE=2048 \
54+
PHOTOPRISM_THUMB_SIZE_UNCACHED=7680 \
55+
PHOTOPRISM_JPEG_SIZE=7680 \
56+
PHOTOPRISM_JPEG_QUALITY=92 \
57+
PHOTOPRISM_WORKERS=0 \
58+
PHOTOPRISM_WAKEUP_INTERVAL=900 \
59+
PHOTOPRISM_AUTO_INDEX=300 \
60+
PHOTOPRISM_AUTO_IMPORT=300
1561

1662
# Configure apt-get
1763
RUN echo 'Acquire::Retries "10";' > /etc/apt/apt.conf.d/80retry && \
@@ -56,58 +102,6 @@ RUN ldconfig
56102
RUN umask 0000 && useradd photoprism -m -d /photoprism
57103
WORKDIR /photoprism
58104

59-
ENV TF_CPP_MIN_LOG_LEVEL 2
60-
61-
ENV PATH /photoprism/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
62-
ENV TMPDIR /tmp
63-
64-
# Storage path names
65-
ENV PHOTOPRISM_ASSETS_PATH="/photoprism/assets" \
66-
PHOTOPRISM_STORAGE_PATH="/photoprism/storage" \
67-
PHOTOPRISM_BACKUP_PATH="/var/lib/photoprism" \
68-
PHOTOPRISM_ORIGINALS_PATH="/photoprism/originals" \
69-
PHOTOPRISM_IMPORT_PATH="/photoprism/import" \
70-
PHOTOPRISM_LOG_FILENAME="/photoprism/photoprism.log" \
71-
PHOTOPRISM_PID_FILENAME="/photoprism/photoprism.pid"
72-
73-
# Defaults for common config values
74-
# See https://docs.photoprism.org/getting-started/config-options/
75-
ENV PHOTOPRISM_DEBUG="false" \
76-
PHOTOPRISM_PUBLIC="false" \
77-
PHOTOPRISM_READONLY="false" \
78-
PHOTOPRISM_UPLOAD_NSFW="true" \
79-
PHOTOPRISM_DETECT_NSFW="false" \
80-
PHOTOPRISM_EXPERIMENTAL="false" \
81-
PHOTOPRISM_SITE_URL="http://localhost:2342/" \
82-
PHOTOPRISM_SITE_TITLE="PhotoPrism" \
83-
PHOTOPRISM_SITE_CAPTION="Browse Your Life" \
84-
PHOTOPRISM_SITE_DESCRIPTION="" \
85-
PHOTOPRISM_SITE_AUTHOR="" \
86-
PHOTOPRISM_HTTP_HOST="0.0.0.0" \
87-
PHOTOPRISM_HTTP_PORT=2342 \
88-
PHOTOPRISM_DATABASE_DRIVER="sqlite" \
89-
PHOTOPRISM_DATABASE_SERVER="" \
90-
PHOTOPRISM_DATABASE_NAME="photoprism" \
91-
PHOTOPRISM_DATABASE_USER="photoprism" \
92-
PHOTOPRISM_DATABASE_PASSWORD="" \
93-
PHOTOPRISM_DISABLE_WEBDAV="false" \
94-
PHOTOPRISM_DISABLE_SETTINGS="false" \
95-
PHOTOPRISM_DISABLE_BACKUPS="false" \
96-
PHOTOPRISM_DISABLE_EXIFTOOL="false" \
97-
PHOTOPRISM_DISABLE_PLACES="false" \
98-
PHOTOPRISM_DISABLE_TENSORFLOW="false" \
99-
PHOTOPRISM_DARKTABLE_PRESETS="false" \
100-
PHOTOPRISM_THUMB_FILTER="lanczos" \
101-
PHOTOPRISM_THUMB_UNCACHED="false" \
102-
PHOTOPRISM_THUMB_SIZE=2048 \
103-
PHOTOPRISM_THUMB_SIZE_UNCACHED=7680 \
104-
PHOTOPRISM_JPEG_SIZE=7680 \
105-
PHOTOPRISM_JPEG_QUALITY=92 \
106-
PHOTOPRISM_WORKERS=0 \
107-
PHOTOPRISM_WAKEUP_INTERVAL=900 \
108-
PHOTOPRISM_AUTO_INDEX=300 \
109-
PHOTOPRISM_AUTO_IMPORT=300
110-
111105
# Copy files to /photoprism
112106
COPY --from=build /root/.local/bin/photoprism /photoprism/bin/photoprism
113107
COPY --from=build /root/.photoprism/assets /photoprism/assets

0 commit comments

Comments
 (0)