87 lines
2.5 KiB
Docker
87 lines
2.5 KiB
Docker
ARG REGISTRY=docker.io
|
|
ARG USER
|
|
ARG DISTRO
|
|
FROM $USER/$DISTRO-build
|
|
# Arguments used after FROM must be specified again
|
|
ARG DISTRO
|
|
|
|
RUN apt-get update && \
|
|
apt-get upgrade -y && \
|
|
DEBIAN_FRONTEND=noninteractive \
|
|
apt-get install -y --no-install-recommends \
|
|
cmake \
|
|
vim \
|
|
sudo \
|
|
iproute2 \
|
|
iputils-ping \
|
|
libcap2-bin \
|
|
net-tools \
|
|
wget && \
|
|
apt-get clean
|
|
|
|
ARG MONGODB_KEY=/usr/share/keyrings/mongodb-org.asc
|
|
RUN wget "https://pgp.mongodb.com/server-5.0.asc" -O "$MONGODB_KEY"
|
|
RUN case "$DISTRO" in \
|
|
debian-*) \
|
|
DEBIAN_VERSION=$(echo "$DISTRO" | cut -d "-" -f2); \
|
|
if [ "x${DEBIAN_VERSION}" = "xbookworm" ]; then \
|
|
echo "Using bullseye since bookworm mongodb-org package is not available. Furthermore, manually install required libssl1.1." && \
|
|
DEBIAN_VERSION="bullseye" && \
|
|
wget "http://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.1_1.1.1n-0+deb10u6_amd64.deb" && \
|
|
dpkg -i "libssl1.1_1.1.1n-0+deb10u6_amd64.deb" && \
|
|
rm "libssl1.1_1.1.1n-0+deb10u6_amd64.deb"; \
|
|
fi; \
|
|
echo "deb [signed-by=$MONGODB_KEY] http://repo.mongodb.org/apt/debian ${DEBIAN_VERSION}/mongodb-org/5.0 main" \
|
|
> /etc/apt/sources.list.d/mongodb-org.list \
|
|
;; \
|
|
centos*) \
|
|
echo "TODO: centos" && \
|
|
exit 1 \
|
|
;; \
|
|
esac
|
|
RUN apt-get update && \
|
|
apt-get install -y \
|
|
mongodb-org
|
|
|
|
# create a user
|
|
ARG username=osmocom
|
|
RUN useradd -m ${username} && \
|
|
echo "${username} ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/${username} && \
|
|
chmod 0440 /etc/sudoers.d/${username}
|
|
|
|
WORKDIR /home/${username}
|
|
|
|
|
|
# clone open5gs
|
|
ARG GITHUB_USER=open5gs
|
|
ARG GITHUB_REPO=open5gs
|
|
ARG OPEN5GS_BRANCH=main
|
|
RUN git clone https://github.com/$GITHUB_USER/$GITHUB_REPO
|
|
|
|
# install dependencies specified in debian/control (cache them)
|
|
RUN cd $GITHUB_REPO && \
|
|
git checkout $OPEN5GS_BRANCH && \
|
|
apt-get build-dep -y .
|
|
|
|
ADD https://api.github.com/repos/$GITHUB_USER/$GITHUB_REPO/git/refs/heads/$OPEN5GS_BRANCH /root/open5gs-ver.json
|
|
|
|
# update the source code (if needed)
|
|
RUN cd $GITHUB_REPO && \
|
|
git fetch && git checkout -f -B $OPEN5GS_BRANCH origin/$OPEN5GS_BRANCH
|
|
|
|
# update installed dependencies, install missing (if any)
|
|
RUN cd $GITHUB_REPO && \
|
|
apt-get build-dep -y .
|
|
|
|
# build + install open5gs
|
|
RUN cd $GITHUB_REPO && \
|
|
meson build \
|
|
--prefix=/usr \
|
|
--sysconfdir=/etc \
|
|
--localstatedir=/var \
|
|
--libdir=lib/x86_64-linux-gnu \
|
|
--libexecdir=lib/x86_64-linux-gnu && \
|
|
meson configure build && \
|
|
ninja -C build install && \
|
|
install -m 0755 build/misc/db/open5gs-dbctl /usr/bin/open5gs-dbctl
|