129 lines
4.3 KiB
Docker
129 lines
4.3 KiB
Docker
# BSD 2-Clause License
|
|
|
|
# Copyright (c) 2020, Supreeth Herle
|
|
# All rights reserved.
|
|
|
|
# Redistribution and use in source and binary forms, with or without
|
|
# modification, are permitted provided that the following conditions are met:
|
|
|
|
# 1. Redistributions of source code must retain the above copyright notice, this
|
|
# list of conditions and the following disclaimer.
|
|
|
|
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
# this list of conditions and the following disclaimer in the documentation
|
|
# and/or other materials provided with the distribution.
|
|
|
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
FROM ubuntu:focal as builder
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
# Install updates and dependencies
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends \
|
|
python3-pip \
|
|
python3-setuptools \
|
|
python3-wheel \
|
|
ninja-build \
|
|
build-essential \
|
|
flex \
|
|
bison \
|
|
git \
|
|
cmake \
|
|
libsctp-dev \
|
|
libgnutls28-dev \
|
|
libgcrypt-dev \
|
|
libssl-dev \
|
|
libidn11-dev \
|
|
libmongoc-dev \
|
|
libbson-dev \
|
|
libyaml-dev \
|
|
meson \
|
|
mongodb \
|
|
curl \
|
|
gnupg \
|
|
ca-certificates \
|
|
libmicrohttpd-dev \
|
|
libcurl4-gnutls-dev \
|
|
libnghttp2-dev \
|
|
libtins-dev \
|
|
libidn11-dev \
|
|
libtalloc-dev
|
|
|
|
RUN mkdir -p /etc/apt/keyrings
|
|
RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
|
|
NODE_MAJOR=20 && \
|
|
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && \
|
|
apt-get update && apt install nodejs -y
|
|
|
|
# Get open5gs code and install
|
|
RUN git clone --recursive https://github.com/open5gs/open5gs && cd open5gs && \
|
|
git checkout 322719f3e729aafacf531e85552d7a977fff3e2a && meson build --prefix=`pwd`/install && \
|
|
ninja -C build && cd build && ninja install && \
|
|
mkdir -p /open5gs/install/include
|
|
|
|
# Building WebUI of open5gs
|
|
RUN cd open5gs/webui && npm ci
|
|
|
|
# Build final image
|
|
FROM ubuntu:focal
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends \
|
|
curl \
|
|
ca-certificates \
|
|
libssl-dev \
|
|
libyaml-dev \
|
|
libmicrohttpd-dev \
|
|
libmongoc-dev \
|
|
libsctp-dev \
|
|
libcurl4-gnutls-dev \
|
|
libtins-dev \
|
|
libidn11-dev \
|
|
libtalloc-dev \
|
|
netbase \
|
|
ifupdown \
|
|
net-tools \
|
|
iputils-ping \
|
|
python3-setuptools \
|
|
python3-wheel \
|
|
python3-pip \
|
|
iptables \
|
|
iperf \
|
|
gnupg && \
|
|
apt-get autoremove -y && apt-get autoclean
|
|
|
|
RUN pip3 install click
|
|
|
|
RUN mkdir -p /etc/apt/keyrings
|
|
RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
|
|
NODE_MAJOR=20 && \
|
|
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && \
|
|
apt-get update && apt install nodejs -y
|
|
|
|
RUN update-ca-certificates
|
|
|
|
COPY --from=builder /open5gs/install/bin /open5gs/install/bin
|
|
COPY --from=builder /open5gs/install/etc /open5gs/install/etc
|
|
COPY --from=builder /open5gs/install/include /open5gs/install/include
|
|
COPY --from=builder /open5gs/install/lib /open5gs/install/lib
|
|
COPY --from=builder /open5gs/webui /open5gs/webui
|
|
|
|
# Set the working directory to open5gs
|
|
WORKDIR open5gs
|
|
|
|
COPY open5gs_init.sh /
|
|
CMD /open5gs_init.sh
|