Repository navigation
Expand file tree
/
Copy pathDockerfile
More file actions
152 lines (137 loc) · 3.52 KB
/
Copy pathDockerfile
File metadata and controls
152 lines (137 loc) · 3.52 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
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
ARG ARCH
ARG TAG
ARG VERSION
ARG BUILD_DATE
ARG REMOTE_TAG
ARG VARIANT
# Builder image
FROM debian:bookworm-slim AS builder
ARG ARCH
ARG REMOTE_TAG
ARG VARIANT
# Install required development packages
COPY builder/install_packages /usr/sbin/
RUN chmod 0755 /usr/sbin/install_packages
# Base packages
RUN install_packages \
sudo \
ca-certificates \
findutils \
gnupg \
dirmngr \
inetutils-ping \
netbase \
curl \
udev \
procps \
$( \
if apt-cache show 'iproute' 2>/dev/null | grep -q '^Version:'; then \
echo 'iproute'; \
else \
echo 'iproute2'; \
fi \
)
# Build packages
RUN install_packages \
ca-certificates \
curl \
wget \
bzr \
git \
mercurial \
openssh-client \
subversion \
autoconf \
build-essential \
imagemagick \
libbz2-dev \
libcurl4-openssl-dev \
libevent-dev \
libffi-dev \
libglib2.0-dev \
libjpeg-dev \
libftdi-dev \
libusb-dev \
libmagickcore-dev \
libmagickwand-dev \
libncurses-dev \
libpq-dev \
libreadline-dev \
libsqlite3-dev \
libssl-dev \
libxml2-dev \
libxslt-dev \
libyaml-dev \
zlib1g-dev \
$( \
if apt-cache show 'default-libmariadb-dev' 2>/dev/null | grep -q '^Version:'; then \
echo 'default-libmariadb-dev'; \
else \
echo 'libmariadb-dev'; \
fi \
)
# Switch to working directory for our app
WORKDIR /app
# Checkout and compile remote code
COPY builder/build ./
COPY builder/patches ./patches
RUN chmod +x build
RUN ARCH=${ARCH} REMOTE_TAG=${REMOTE_TAG} VARIANT=${VARIANT} ./build
# Runner image
FROM debian:bookworm-slim AS runner
ARG ARCH
ARG TAG
ARG VERSION
ARG BUILD_DATE
ARG REMOTE_TAG
ARG VARIANT
# Install utility
COPY builder/install_packages /usr/sbin/
RUN chmod 0755 /usr/sbin/install_packages
# Base packages
RUN install_packages \
sudo \
ca-certificates \
findutils \
gnupg \
dirmngr \
inetutils-ping \
netbase \
curl \
udev \
procps \
$( \
if apt-cache show 'iproute' 2>/dev/null | grep -q '^Version:'; then \
echo 'iproute'; \
else \
echo 'iproute2'; \
fi \
)
# Image metadata
LABEL maintainer="Xose Pérez <xose.perez@gmail.com>"
LABEL authors="Jose Marcelino, Marc Pous, Xose Pérez and Semtech"
LABEL org.label-schema.schema-version="1.0"
LABEL org.label-schema.build-date=${BUILD_DATE}
LABEL org.label-schema.name="LoRaWAN Basics™ Station"
LABEL org.label-schema.version="${VERSION} based on ${REMOTE_TAG}-${VARIANT}"
LABEL org.label-schema.description="LoRaWAN gateway with Basics™ Station Packet Forward protocol"
LABEL org.label-schema.vcs-type="Git"
LABEL org.label-schema.vcs-url="https://github.com/xoseperez/basicstation-docker"
LABEL org.label-schema.vcs-ref=${TAG}
LABEL org.label-schema.arch=${ARCH}
LABEL org.label-schema.license="BSD License 2.0"
# Install required runtime packages
RUN install_packages jq vim gpiod socat
# Switch to working directory for our app
WORKDIR /app
# Copy fles from builder and repo
RUN mkdir ./artifacts
COPY --from=builder /app/basicstation/build-rpi-${VARIANT}/bin ./artifacts/v2
COPY --from=builder /app/basicstation/build-corecell-${VARIANT}/bin ./artifacts/corecell
COPY --from=builder /app/basicstation/build-linuxpico-${VARIANT}/bin ./artifacts/picocell
COPY runner/* ./
RUN chmod +x start gateway_eui find_concentrator
# Add application folder to path
ENV PATH="${PATH}:/app"
# Launch our binary on container startup.
CMD ["start"]