mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-03-17 20:34:51 +08:00
81 lines
2.6 KiB
Bash
Executable File
81 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env sh
|
|
|
|
# This file is using docker to run commands
|
|
|
|
self_dir=$(cd "$(dirname "$0")";pwd)
|
|
|
|
# Detect docker can run
|
|
if ! which docker >/dev/null; then
|
|
echo "Docker is not installed, please install docker first !"
|
|
exit 1
|
|
fi
|
|
DOCKER_EXECUTABLE="docker"
|
|
if [ $(id -u) -ne 0 ]; then
|
|
if ! docker info > /dev/null 2>&1; then
|
|
if [ "$SPC_USE_SUDO" != "yes" ]; then
|
|
echo "Docker command requires sudo"
|
|
echo -n 'To use sudo to run docker, run "export SPC_USE_SUDO=yes" and run command again'
|
|
exit 1
|
|
fi
|
|
DOCKER_EXECUTABLE="sudo docker"
|
|
fi
|
|
fi
|
|
|
|
|
|
|
|
# to check if qemu-docker run
|
|
if [ "$SPC_USE_ARCH" = "" ]; then
|
|
SPC_USE_ARCH=x86_64
|
|
fi
|
|
case $SPC_USE_ARCH in
|
|
x86_64)
|
|
ALPINE_FROM=alpine:edge
|
|
;;
|
|
aarch64)
|
|
ALPINE_FROM=multiarch/alpine:aarch64-edge
|
|
echo -e "\e[033m* Using different arch needs to setup qemu-static for docker !\e[0m"
|
|
$DOCKER_EXECUTABLE run --rm --privileged multiarch/qemu-user-static:register --reset > /dev/null
|
|
;;
|
|
armv7l)
|
|
ALPINE_FROM=multiarch/alpine:armv7-edge
|
|
echo -e "\e[033m* Using different arch needs to setup qemu-static for docker !\e[0m"
|
|
$DOCKER_EXECUTABLE run --rm --privileged multiarch/qemu-user-static:register --reset > /dev/null
|
|
;;
|
|
*)
|
|
echo "Current arch is not supported to run in docker: $SPC_USE_ARCH"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
if [ "$SPC_USE_MIRROR" = "yes" ]; then
|
|
SPC_USE_MIRROR="RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories"
|
|
else
|
|
SPC_USE_MIRROR="RUN echo 'Using original repo'"
|
|
fi
|
|
|
|
# Detect docker env is setup
|
|
if ! $DOCKER_EXECUTABLE images | grep -q cwcc-spc-$SPC_USE_ARCH; then
|
|
echo "Docker container does not exist. Building docker image ..."
|
|
ALPINE_DOCKERFILE=$(cat << EOF
|
|
FROM $ALPINE_FROM
|
|
$SPC_USE_MIRROR
|
|
RUN apk update
|
|
RUN apk add bash file wget cmake gcc g++ jq autoconf git libstdc++ linux-headers make m4 libgcc binutils bison flex pkgconfig automake curl
|
|
RUN apk add build-base xz php81 php81-common php81-pcntl php81-tokenizer php81-phar php81-posix php81-xml composer
|
|
RUN mkdir /app
|
|
WORKDIR /app
|
|
ADD ./src /app/src
|
|
ADD ./composer.json /app/composer.json
|
|
ADD ./bin /app/bin
|
|
RUN composer update --no-dev
|
|
EOF
|
|
)
|
|
echo "$ALPINE_DOCKERFILE" > $(pwd)/Dockerfile
|
|
|
|
$DOCKER_EXECUTABLE build -t cwcc-spc-$SPC_USE_ARCH .
|
|
rm $(pwd)/Dockerfile
|
|
fi
|
|
|
|
# Run docker
|
|
$DOCKER_EXECUTABLE run --rm -it -e SPC_FIX_DEPLOY_ROOT=$(pwd) -v $(pwd)/config:/app/config -v $(pwd)/src:/app/src -v $(pwd)/buildroot:/app/buildroot -v $(pwd)/source:/app/source -v $(pwd)/downloads:/app/downloads cwcc-spc-$SPC_USE_ARCH bin/spc $@
|