forked from jlesage/docker-baseimage
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile.debian
104 lines (89 loc) · 2.91 KB
/
Dockerfile.debian
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#
# baseimage Dockerfile
#
# https://github.com/jlesage/docker-baseimage
#
ARG BASEIMAGE=unknown
# Pull base image.
FROM ${BASEIMAGE}
# Define s6 overlay related variables.
ARG S6_OVERLAY_ARCH=x86_64
ARG S6_OVERLAY_VERSION=1.21.4.0
ARG S6_OVERLAY_URL=https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-${S6_OVERLAY_ARCH}.tar.gz
# Variables needed for package installation via APT.
ARG DEBIAN_FRONTEND=noninteractive
ARG TERM=xterm
# Define working directory.
WORKDIR /tmp
# Copy helpers.
COPY helpers/* /usr/local/bin/
# Install s6 overlay.
RUN \
add-pkg --virtual build-dependencies curl ca-certificates patch && \
echo "Downloading s6-overlay..." && \
curl -# -L -o s6-overlay.tar.gz ${S6_OVERLAY_URL} && \
echo "Installing s6-overlay..." && \
# Workaround for some distro where '/bin' being a symlink to '/usr/bin':
# extract the tarball in two steps.
if [ -L /bin ]; then \
tar xzf s6-overlay.tar.gz -C / --exclude="./bin" && \
tar xzf /tmp/s6-overlay.tar.gz -C /usr ./bin; \
else \
tar xzf s6-overlay.tar.gz -C /; \
fi && \
echo "Patching s6-overlay..." && \
curl -# -L https://github.com/jlesage/s6-overlay/commit/d151c41.patch | patch -d / -p3 && \
chmod +x \
/etc/s6/services/.s6-svscan/SIGHUP \
/etc/s6/services/.s6-svscan/SIGINT \
/etc/s6/services/.s6-svscan/SIGQUIT \
/etc/s6/services/.s6-svscan/SIGTERM \
/usr/bin/sv-getdeps \
&& \
# Cleanup
del-pkg build-dependencies && \
rm -rf /tmp/* /tmp/.[!.]*
# Install system packages.
RUN \
add-pkg \
# For timezone support
tzdata
# Make sure VERSION_CODENAME is set in /etc/os-release.
RUN \
if ! grep -q "^VERSION_CODENAME=" /etc/os-release; then \
add-pkg lsb-release && \
echo "VERSION_CODENAME=$(lsb_release -c -s)" >> /etc/os-release && \
del-pkg lsb-release; \
fi
# Save some defaults.
RUN \
mkdir /defaults && \
cp /etc/passwd /defaults/ && \
cp /etc/group /defaults/ && \
cp /etc/shadow /defaults/
# Add files.
COPY rootfs/ /
# Set environment variables.
ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=3 \
S6_SERVICE_DEPS=1 \
USER_ID=1000 \
GROUP_ID=1000 \
APP_NAME=DockerApp \
APP_USER=app \
XDG_DATA_HOME=/config/xdg/data \
XDG_CONFIG_HOME=/config/xdg/config \
XDG_CACHE_HOME=/config/xdg/cache \
XDG_RUNTIME_DIR=/tmp/run/user/app
# Define mountable directories.
VOLUME ["/config"]
# Define default command.
# Use S6 overlay init system.
CMD ["/init"]
# Metadata.
ARG IMAGE_VERSION=unknown
LABEL \
org.label-schema.name="baseimage" \
org.label-schema.description="A minimal docker baseimage to ease creation of long-lived application containers" \
org.label-schema.version="${IMAGE_VERSION}" \
org.label-schema.vcs-url="https://github.com/jlesage/docker-baseimage" \
org.label-schema.schema-version="1.0"