mirror of
https://github.com/m1k1o/neko.git
synced 2024-07-24 14:40:50 +12:00
108 lines
2.6 KiB
Bash
Executable File
108 lines
2.6 KiB
Bash
Executable File
#!/bin/sh
|
|
set -ex
|
|
cd "$(dirname "$0")"
|
|
|
|
BASE="${PWD}/../"
|
|
|
|
# BUILD_IMAGE from environment vairables has precedence
|
|
if [ ! -z "${BUILD_IMAGE}" ]
|
|
then
|
|
ENV_BUILD_IMAGE="${BUILD_IMAGE}"
|
|
fi
|
|
|
|
if [ -f ".env.default" ]
|
|
then
|
|
export $(cat .env.default | sed 's/#.*//g' | xargs)
|
|
fi
|
|
|
|
if [ -f ".env" ]
|
|
then
|
|
export $(cat .env | sed 's/#.*//g' | xargs)
|
|
fi
|
|
|
|
# BUILD_IMAGE from environment vairables has precedence
|
|
if [ ! -z "${ENV_BUILD_IMAGE}" ]
|
|
then
|
|
BUILD_IMAGE="${ENV_BUILD_IMAGE}"
|
|
unset ENV_BUILD_IMAGE
|
|
fi
|
|
|
|
if [ -z "${1}" ] && [ ! -z "${SERVER_TAG}" ]
|
|
then
|
|
./build base
|
|
./build ${SERVER_TAG}
|
|
exit 0
|
|
fi
|
|
|
|
|
|
build_client() {
|
|
docker build -t neko-dev-client -f base/Dockerfile --target client "${BASE}"
|
|
docker run --rm \
|
|
--user "$(id -u):$(id -g)" \
|
|
-v "${BASE}client/dist:/tmp/dist" \
|
|
neko-dev-client sh -c "rm -rf /tmp/dist/*; cp -r /src/dist/* /tmp/dist"
|
|
}
|
|
|
|
build_server() {
|
|
docker build -t neko-dev-server -f base/Dockerfile --target server "${BASE}"
|
|
docker run --rm \
|
|
--user "$(id -u):$(id -g)" \
|
|
-v "${BASE}server/bin:/tmp/bin" \
|
|
neko-dev-server sh -c "rm -rf /tmp/bin/neko; cp /src/bin/neko /tmp/bin"
|
|
}
|
|
|
|
build() {
|
|
if [ "$1" = "base" ]
|
|
then
|
|
# build base
|
|
docker build -t "${BUILD_IMAGE}:base" -f base/Dockerfile "${BASE}"
|
|
else
|
|
# build image
|
|
docker build -t "${BUILD_IMAGE}:$1" --build-arg="BASE_IMAGE=${BUILD_IMAGE}:base" -f "$1/Dockerfile" "$1/"
|
|
fi
|
|
}
|
|
|
|
build_arm() {
|
|
if [ "$1" = "base" ]
|
|
then
|
|
# build ARM base
|
|
docker build -t "${BUILD_IMAGE}:arm-base" -f base/Dockerfile.arm "${BASE}"
|
|
elif [ -f "$1/Dockerfile.arm" ]
|
|
then
|
|
# build dedicated ARM image
|
|
docker build -t "${BUILD_IMAGE}:arm-$1" --build-arg="BASE_IMAGE=${BUILD_IMAGE}:arm-base" -f "$1/Dockerfile.arm" "$1/"
|
|
else
|
|
# try to build ARM image with common Dockerfile
|
|
docker build -t "${BUILD_IMAGE}:arm-$1" --build-arg="BASE_IMAGE=${BUILD_IMAGE}:arm-base" -f "$1/Dockerfile" "$1/"
|
|
fi
|
|
}
|
|
|
|
build_intel() {
|
|
if [ "$1" = "base" ]
|
|
then
|
|
# build intel base
|
|
docker build -t "${BUILD_IMAGE}:intel-base" -f base/Dockerfile.intel "${BASE}"
|
|
elif [ -f "$1/Dockerfile.intel" ]
|
|
then
|
|
# build dedicated intel image
|
|
docker build -t "${BUILD_IMAGE}:intel-$1" --build-arg="BASE_IMAGE=${BUILD_IMAGE}:intel-base" -f "$1/Dockerfile.intel" "$1/"
|
|
else
|
|
# try to build intel image with common Dockerfile
|
|
docker build -t "${BUILD_IMAGE}:intel-$1" --build-arg="BASE_IMAGE=${BUILD_IMAGE}:intel-base" -f "$1/Dockerfile" "$1/"
|
|
fi
|
|
}
|
|
|
|
case $1 in
|
|
client) build_client;;
|
|
server) build_server;;
|
|
|
|
# build arm- images
|
|
arm-*) build_arm "${1#arm-}";;
|
|
|
|
# build intel- images
|
|
intel-*) build_intel "${1#intel-}";;
|
|
|
|
# build images
|
|
*) build "$1";;
|
|
esac
|