mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-01-19 13:25:31 +08:00
added arm64 dockerfile
This commit is contained in:
parent
f79b9dee26
commit
28d4bfc8f9
123
config/docker/Dockerfile_arm64
Normal file
123
config/docker/Dockerfile_arm64
Normal file
@ -0,0 +1,123 @@
|
||||
# if provided it will make debug build
|
||||
ARG cmake_build_type=Release
|
||||
# whether to make GUI or headless build (defaults to headless)
|
||||
ARG headless_build=1
|
||||
# system to start with the build with
|
||||
# currently will break for other images
|
||||
ARG base_image=ubuntu:latest
|
||||
|
||||
#-------------------------------BUILDER--------------------------------
|
||||
# Start with the base image
|
||||
FROM --platform=linux/arm64 ${base_image} AS builder
|
||||
|
||||
# Renew the ARGs
|
||||
ARG headless_build
|
||||
ARG cmake_build_type
|
||||
|
||||
# Environment settings
|
||||
ENV LANG en_US.utf8
|
||||
ENV LANGUAGE=en_US
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV CMAKE_BUILD_TYPE=${cmake_build_type}
|
||||
ENV HEADLESS_BUILD=${headless_build}
|
||||
|
||||
# Enable ARM64 architecture and update package lists
|
||||
RUN dpkg --add-architecture arm64 && apt-get update -y
|
||||
|
||||
# Install necessary tools to create users and groups
|
||||
RUN apt-get install -y adduser \
|
||||
&& apt-cache search clang-tools
|
||||
|
||||
# Configure dpkg to skip systemd post-installation scripts
|
||||
RUN mkdir -p /etc/systemd/system && \
|
||||
echo "exit 0" > /usr/sbin/policy-rc.d && chmod +x /usr/sbin/policy-rc.d && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
# testing
|
||||
clang
|
||||
|
||||
RUN apt-get install -y --no-install-recommends \
|
||||
python3.12-dev \
|
||||
python3.12-venv \
|
||||
python3-pip \
|
||||
libsdl2-dev \
|
||||
libglut-dev \
|
||||
libopenal-dev \
|
||||
make \
|
||||
curl \
|
||||
rsync \
|
||||
clang-format \
|
||||
cmake \
|
||||
libvorbis-dev \
|
||||
build-essential \
|
||||
&& rm /usr/sbin/policy-rc.d
|
||||
|
||||
# Copy source code
|
||||
COPY ./ /home/ubuntu/ballistica
|
||||
|
||||
# Set the working directory
|
||||
WORKDIR /home/ubuntu/ballistica
|
||||
|
||||
# Compile the application
|
||||
RUN mkdir /ballistica_cmake && \
|
||||
if [ "$HEADLESS_BUILD" != "0" ]; then \
|
||||
make cmake-server-build && \
|
||||
mv build/cmake/*/ballisticakit_headless build/cmake/*/staged/dist; \
|
||||
else \
|
||||
make cmake-build && \
|
||||
mv build/cmake/*/ballisticakit build/cmake/*/staged/; \
|
||||
fi && \
|
||||
mv build/cmake/*/staged/* /ballistica_cmake
|
||||
|
||||
#-------------------------------RUNNER--------------------------------
|
||||
# Create a new stage for the runtime environment using ARM64 base image
|
||||
FROM --platform=linux/arm64 ${base_image}
|
||||
|
||||
# Environment settings
|
||||
ENV LANG en_US.utf8
|
||||
ENV LANGUAGE=en_US
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
# Renew the ARGs
|
||||
ARG headless_build
|
||||
ENV HEADLESS_BUILD=${headless_build}
|
||||
ARG cmake_build_type
|
||||
LABEL BOMBSQUAD_BUILD_TYPE=${cmake_build_type}
|
||||
|
||||
# Install necessary tools to create users and groups
|
||||
RUN apt-get update -y && apt-get install -y adduser
|
||||
|
||||
# Pre-create necessary users and groups to avoid systemd configuration errors
|
||||
RUN addgroup --system systemd-journal && \
|
||||
adduser --system --no-create-home --ingroup systemd-journal systemd-network
|
||||
|
||||
# Configure dpkg to skip systemd post-installation scripts
|
||||
RUN mkdir -p /etc/systemd/system && \
|
||||
echo "exit 0" > /usr/sbin/policy-rc.d && chmod +x /usr/sbin/policy-rc.d && \
|
||||
apt-get update -y && \
|
||||
apt-get install -y \
|
||||
python3.12-dev && \
|
||||
if [ "$HEADLESS_BUILD" = "0" ]; then \
|
||||
apt-get install -y \
|
||||
libsdl2-dev \
|
||||
libvorbis-dev \
|
||||
libglut-dev \
|
||||
libopenal-dev; \
|
||||
fi && \
|
||||
rm -rf /var/lib/apt/lists/* && \
|
||||
python3.12 -c "import uuid;print(uuid.uuid4())" > /etc/machine-id && \
|
||||
rm /usr/sbin/policy-rc.d
|
||||
|
||||
# Copy the compiled application from the builder stage
|
||||
COPY --from=builder /ballistica_cmake \
|
||||
/home/ubuntu/ballistica
|
||||
|
||||
# Set the working directory
|
||||
WORKDIR /home/ubuntu/ballistica
|
||||
|
||||
RUN ln -s ballisticakit* run
|
||||
|
||||
# Expose the necessary port
|
||||
EXPOSE 43210/udp
|
||||
|
||||
# Set the default command to run the application
|
||||
CMD [ "./run" ]
|
||||
Loading…
x
Reference in New Issue
Block a user