-
Notifications
You must be signed in to change notification settings - Fork 78
Expand file tree
/
Copy pathDockerfile.alpine
More file actions
68 lines (56 loc) · 2.86 KB
/
Dockerfile.alpine
File metadata and controls
68 lines (56 loc) · 2.86 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
# Use multi-stage build
FROM alpine:3.23
# Create liquibase user
RUN addgroup --gid 1001 liquibase && \
adduser --disabled-password --uid 1001 --ingroup liquibase --home /liquibase liquibase && \
chown liquibase:root /liquibase && \
chmod g+rx /liquibase
# Install smaller JRE, if available and acceptable
RUN apk add --no-cache openjdk21-jre-headless bash
WORKDIR /liquibase
ARG LIQUIBASE_VERSION=5.0.1
ARG LB_SHA256=3ae11ccdcd4c080e421e5fd043bdbd624d56fcfc9b294d5d9d898cb8b074e449
# Download, verify, extract
RUN set -x && \
apk add --no-cache --virtual .fetch-deps wget && \
wget -q -O liquibase-${LIQUIBASE_VERSION}.tar.gz "https://github.com/liquibase/liquibase/releases/download/v${LIQUIBASE_VERSION}/liquibase-${LIQUIBASE_VERSION}.tar.gz" && \
echo "$LB_SHA256 *liquibase-${LIQUIBASE_VERSION}.tar.gz" | sha256sum -c - && \
tar -xzf liquibase-${LIQUIBASE_VERSION}.tar.gz && \
rm liquibase-${LIQUIBASE_VERSION}.tar.gz && \
apk del --no-network .fetch-deps && \
ln -s /liquibase/liquibase /usr/local/bin/liquibase && \
ln -s /liquibase/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh && \
liquibase --version
ARG LPM_VERSION=0.3.1
ARG LPM_SHA256=c21d5df31a5af30e355186d1f0cebc203f6e4f60522a37505b0702db6927b5ca
ARG LPM_SHA256_ARM=207177f3f701944326883156549f81a7826d1928addcc1880aee73df2a4703b9
# Add metadata labels
LABEL org.opencontainers.image.description="Liquibase Container Image (Alpine)"
LABEL org.opencontainers.image.licenses="FSL-1.1-ALv2"
LABEL org.opencontainers.image.vendor="Liquibase"
LABEL org.opencontainers.image.version="${LIQUIBASE_VERSION}"
LABEL org.opencontainers.image.documentation="https://docs.liquibase.com"
# Download and Install lpm
RUN mkdir /liquibase/bin && \
apk add --no-cache --virtual .fetch-deps wget unzip && \
arch="$(apk --print-arch)" && \
case "$arch" in \
x86_64) DOWNLOAD_ARCH="" ;; \
aarch64) DOWNLOAD_ARCH="-arm64" && LPM_SHA256=$LPM_SHA256_ARM ;; \
*) echo >&2 "error: unsupported architecture '$arch'" && exit 1 ;; \
esac && wget -q -O lpm-${LPM_VERSION}-linux${DOWNLOAD_ARCH}.zip "https://github.com/liquibase/liquibase-package-manager/releases/download/v${LPM_VERSION}/lpm-${LPM_VERSION}-linux${DOWNLOAD_ARCH}.zip" && \
echo "$LPM_SHA256 *lpm-${LPM_VERSION}-linux${DOWNLOAD_ARCH}.zip" | sha256sum -c - && \
unzip lpm-${LPM_VERSION}-linux${DOWNLOAD_ARCH}.zip -d bin/ && \
rm lpm-${LPM_VERSION}-linux${DOWNLOAD_ARCH}.zip && \
apk del --no-network .fetch-deps && \
ln -s /liquibase/bin/lpm /usr/local/bin/lpm && \
lpm --version
# Set LIQUIBASE_HOME environment variable
ENV LIQUIBASE_HOME=/liquibase
# Marker which indicates this is a Liquibase docker container
ENV DOCKER_LIQUIBASE=true
COPY docker-entrypoint.sh ./
COPY liquibase.docker.properties ./
USER liquibase:liquibase
ENTRYPOINT ["/liquibase/docker-entrypoint.sh"]
CMD ["--help"]