mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2025-11-29 17:38:24 +08:00
feat(Apps/Docker): Use Env Vars for docker configuration (#17040)
* feat(docker): Use Env Vars for docker configuration use env vars for docker * simplify docker-compose.yaml
This commit is contained in:
@@ -143,32 +143,6 @@ function comp_compile() {
|
||||
find "$AC_BINPATH_FULL" -mindepth 1 -maxdepth 1 -type f -exec sudo chown root:root -- {} +
|
||||
find "$AC_BINPATH_FULL" -mindepth 1 -maxdepth 1 -type f -exec sudo chmod u+s -- {} +
|
||||
|
||||
DOCKER_ETC_FOLDER=${DOCKER_ETC_FOLDER:-"env/dist/etc"}
|
||||
|
||||
if [[ $DOCKER = 1 && $DISABLE_DOCKER_CONF != 1 ]]; then
|
||||
echo "Generating confs..."
|
||||
|
||||
# Search for all configs under DOCKER_ETC_FOLDER
|
||||
for dockerdist in "$DOCKER_ETC_FOLDER"/*.dockerdist; do
|
||||
# Grab "base" conf. turns foo.conf.dockerdist into foo.conf
|
||||
baseConf="$(echo "$dockerdist" | rev | cut -f1 -d. --complement | rev)"
|
||||
# env/dist/etc/foo.conf becomes foo.conf
|
||||
filename="$(basename "$baseConf")"
|
||||
# the dist files should be always found inside $confDir
|
||||
# which may not be the same as DOCKER_ETC_FOLDER
|
||||
distPath="$confDir/$filename.dist"
|
||||
# if dist file doesn't exist, skip this iteration
|
||||
[ ! -f "$distPath" ] && continue
|
||||
|
||||
# replace params in foo.conf.dist with params in foo.conf.dockerdist
|
||||
conf_layer "$dockerdist" "$distPath" " # Copied from dockerdist"
|
||||
|
||||
# Copy modified dist file to $confDir/$filename
|
||||
# Don't overwrite foo.conf if it already exists.
|
||||
cp --no-clobber --verbose "$distPath" "$confDir/$filename"
|
||||
done
|
||||
fi
|
||||
|
||||
echo "Done"
|
||||
;;
|
||||
esac
|
||||
@@ -185,36 +159,3 @@ function comp_all() {
|
||||
comp_clean
|
||||
comp_build
|
||||
}
|
||||
|
||||
# conf_layer FILENAME FILENAME
|
||||
# Layer the configuration parameters from the first argument onto the second argument
|
||||
function conf_layer() {
|
||||
LAYER="$1"
|
||||
BASE="$2"
|
||||
COMMENT="$3"
|
||||
|
||||
# Loop over all defined params in conf file
|
||||
grep -E "^[a-zA-Z\.0-9]+\s*=.*$" "$LAYER" \
|
||||
| while read -r param
|
||||
do
|
||||
# remove spaces from param
|
||||
# foo = bar becomes foo=bar
|
||||
NOSPACE="$(tr -d '[:space:]' <<< "$param")"
|
||||
|
||||
# split into key and value
|
||||
KEY="$(cut -f1 -d= <<< "$NOSPACE")"
|
||||
VAL="$(cut -f2 -d= <<< "$NOSPACE")"
|
||||
# if key in base and val not in line
|
||||
if grep -qE "^$KEY" "$BASE" && ! grep -qE "^$KEY.*=.*$VAL" "$BASE"; then
|
||||
# Replace line
|
||||
# Prevent issues with shell quoting
|
||||
sed -i \
|
||||
's,^'"$KEY"'.*,'"$KEY = $VAL$COMMENT"',g' \
|
||||
"$BASE"
|
||||
else
|
||||
# insert line
|
||||
echo "$KEY = $VAL$COMMENT" >> "$BASE"
|
||||
fi
|
||||
done
|
||||
echo "Layered $LAYER onto $BASE"
|
||||
}
|
||||
|
||||
@@ -100,11 +100,6 @@ USER $DOCKER_USER
|
||||
# NOTE: this folder is different by the /azerothcore (which is binded instead)
|
||||
COPY --chown=$DOCKER_USER:$DOCKER_USER . /azerothcore
|
||||
|
||||
# Needed if we use the dev image without linking any external folder (e.g. acore-docker)
|
||||
COPY --chown=$DOCKER_USER:$DOCKER_USER env/docker/etc/authserver.conf.dockerdist /azerothcore/env/dist/etc/authserver.conf.dockerdist
|
||||
COPY --chown=$DOCKER_USER:$DOCKER_USER env/docker/etc/worldserver.conf.dockerdist /azerothcore/env/dist/etc/worldserver.conf.dockerdist
|
||||
COPY --chown=$DOCKER_USER:$DOCKER_USER env/docker/etc/dbimport.conf.dockerdist /azerothcore/env/dist/etc/dbimport.conf.dockerdist
|
||||
|
||||
#================================================================
|
||||
#
|
||||
# SERVICE BASE: prepare the OS for the production-ready services
|
||||
@@ -211,9 +206,6 @@ COPY --chown=$DOCKER_USER:$DOCKER_USER ./modules /azerothcore/modules
|
||||
# check if we have ccache files available outside
|
||||
RUN rm -rf /azerothcore/var/ccache/*
|
||||
COPY --chown=$DOCKER_USER:$DOCKER_USER var/docker/ccache /azerothcore/var/ccache
|
||||
COPY --chown=$DOCKER_USER:$DOCKER_USER env/docker/etc/authserver.conf.dockerdist /azerothcore/env/dist/etc/authserver.conf.dockerdist
|
||||
COPY --chown=$DOCKER_USER:$DOCKER_USER env/docker/etc/worldserver.conf.dockerdist /azerothcore/env/dist/etc/worldserver.conf.dockerdist
|
||||
COPY --chown=$DOCKER_USER:$DOCKER_USER env/docker/etc/dbimport.conf.dockerdist /azerothcore/env/dist/etc/dbimport.conf.dockerdist
|
||||
|
||||
# install eluna
|
||||
RUN git clone --depth=1 --branch=master https://github.com/azerothcore/mod-eluna.git /azerothcore/modules/mod-eluna
|
||||
|
||||
Reference in New Issue
Block a user