109 lines
3.3 KiB
Docker
109 lines
3.3 KiB
Docker
#syntax=docker/dockerfile:1.2
|
|
|
|
#================================================================
|
|
#
|
|
# DEV: Stage used for the development environment
|
|
# and the locally built services
|
|
#
|
|
#=================================================================
|
|
|
|
FROM ubuntu:24.04 as dev
|
|
ARG USER_ID=1000
|
|
ARG GROUP_ID=1000
|
|
ARG DOCKER_USER=acore
|
|
ARG TZ=Etc/UTC
|
|
|
|
LABEL description="AC base image for dev containers"
|
|
|
|
# List of timezones: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones
|
|
|
|
ENV DOCKER=1
|
|
|
|
# Ensure ac-dev-server can properly pull versions
|
|
ENV GIT_DISCOVERY_ACROSS_FILESYSTEM=1
|
|
|
|
# set timezone environment variable
|
|
ENV TZ=$TZ
|
|
|
|
# set noninteractive mode so tzdata doesn't ask to set timezone on install
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
# Classic install
|
|
git \
|
|
clang lldb lld clang-format clang-tidy \
|
|
make cmake \
|
|
gcc g++ \
|
|
libmysqlclient-dev \
|
|
libssl-dev \
|
|
libbz2-dev \
|
|
libreadline-dev \
|
|
libncurses-dev \
|
|
mysql-server \
|
|
libboost-all-dev \
|
|
# Other
|
|
curl \
|
|
unzip \
|
|
sudo \
|
|
gdb gdbserver \
|
|
libtool \
|
|
build-essential \
|
|
cmake-data \
|
|
openssl \
|
|
google-perftools libgoogle-perftools-dev \
|
|
libmysql++-dev \
|
|
ccache \
|
|
tzdata \
|
|
# Utility for column command used by dashboard
|
|
util-linux \
|
|
# Certificates for downloading client data
|
|
ca-certificates \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Ensure git will work with the AzerothCore source directory
|
|
RUN git config --global --add safe.directory /azerothcore
|
|
|
|
# change timezone in container
|
|
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
|
|
&& echo $TZ > /etc/timezone && dpkg-reconfigure --frontend noninteractive tzdata
|
|
|
|
# Create a non-root user
|
|
RUN userdel --remove ubuntu \
|
|
&& addgroup --gid "$GROUP_ID" "$DOCKER_USER" \
|
|
&& adduser --disabled-password --gecos '' --uid "$USER_ID" --gid "$GROUP_ID" "$DOCKER_USER" \
|
|
&& passwd -d "$DOCKER_USER" \
|
|
&& echo "$DOCKER_USER ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers
|
|
|
|
# must be created to set the correct permissions on them
|
|
RUN mkdir -p \
|
|
/azerothcore/env/dist/bin \
|
|
/azerothcore/env/dist/data/Cameras \
|
|
/azerothcore/env/dist/data/dbc \
|
|
/azerothcore/env/dist/data/maps \
|
|
/azerothcore/env/dist/data/mmaps \
|
|
/azerothcore/env/dist/data/vmaps \
|
|
/azerothcore/env/dist/logs \
|
|
/azerothcore/env/dist/temp \
|
|
/azerothcore/env/dist/etc \
|
|
/azerothcore/var/build/obj
|
|
|
|
# Correct permissions for non-root operations
|
|
RUN chown -R $DOCKER_USER:$DOCKER_USER /home/acore /run /opt /azerothcore
|
|
|
|
USER $DOCKER_USER
|
|
|
|
# copy only necessary files for the acore dashboard
|
|
COPY --chown=$DOCKER_USER:$DOCKER_USER apps /azerothcore/apps
|
|
COPY --chown=$DOCKER_USER:$DOCKER_USER bin /azerothcore/bin
|
|
COPY --chown=$DOCKER_USER:$DOCKER_USER conf /azerothcore/conf
|
|
COPY --chown=$DOCKER_USER:$DOCKER_USER data /azerothcore/data
|
|
COPY --chown=$DOCKER_USER:$DOCKER_USER deps /azerothcore/deps
|
|
COPY --chown=$DOCKER_USER:$DOCKER_USER acore.json /azerothcore/acore.json
|
|
COPY --chown=$DOCKER_USER:$DOCKER_USER acore.sh /azerothcore/acore.sh
|
|
|
|
# Download deno and make sure the dashboard works
|
|
RUN bash /azerothcore/acore.sh quit
|
|
|
|
WORKDIR /azerothcore
|