This commit is contained in:
Zheng Kai
2023-03-29 17:42:41 +08:00
parent 94b04a181a
commit 1b107ed035
36 changed files with 617 additions and 0 deletions

1
misc/db/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
*.sql

20
misc/db/dump-each-table.sh Executable file
View File

@@ -0,0 +1,20 @@
#!/bin/bash
DB="orca"
DIR="$(dirname "$(readlink -f "$0")")" && cd "$DIR" || exit 1
mkdir -p table
for T in $(echo "SHOW TABLES" | mysql "$DB" --skip-column-names); do
/usr/bin/mysqldump \
--default-character-set=binary \
--add-drop-database \
--add-drop-table \
--add-locks \
--hex-blob \
--quick \
--skip-dump-date \
"${DB}" "${T}" > "table/${T}.sql"
done

16
misc/db/dump-full.sh Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/bash
DB="orca"
DIR="$(dirname "$(readlink -f "$0")")" && cd "$DIR" || exit 1
/usr/bin/mysqldump \
--default-character-set=binary \
--add-drop-database \
--add-drop-table \
--add-locks \
--hex-blob \
--quick \
--skip-dump-date \
--databases "$DB" \
> "${DB}-full.sql"

18
misc/db/dump-struct.sh Executable file
View File

@@ -0,0 +1,18 @@
#!/bin/bash
DB="orca"
DIR="$(dirname "$(readlink -f "$0")")" && cd "$DIR" || exit 1
/usr/bin/mysqldump \
--no-data \
--default-character-set=binary \
--add-drop-database \
--add-drop-table \
--add-locks \
--hex-blob \
--quick \
--skip-dump-date \
--databases "$DB" \
| sed 's# AUTO_INCREMENT=[0-9]*##g' \
> "${DB}-struct.sql"

6
misc/db/user-docker.sql Normal file
View File

@@ -0,0 +1,6 @@
CREATE USER 'orca'@'172.17.0.0/24' IDENTIFIED WITH caching_sha2_password BY 'orca';
GRANT USAGE ON *.* TO 'orca'@'172.17.0.0/24';
ALTER USER 'orca'@'172.17.0.0/24' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, LOCK TABLES ON `orca`.* TO 'orca'@'172.17.0.0/24';
ALTER USER 'orca'@'172.17.0.0/24' ;

6
misc/db/user.sql Normal file
View File

@@ -0,0 +1,6 @@
CREATE USER 'orca'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'orca';
GRANT USAGE ON *.* TO 'orca'@'localhost';
ALTER USER 'orca'@'localhost' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, LOCK TABLES ON `orca`.* TO 'orca'@'localhost';
ALTER USER 'orca'@'localhost' ;

1
misc/docker/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
*.tar

28
misc/docker/Dockerfile Normal file
View File

@@ -0,0 +1,28 @@
# builder stage
FROM golang:latest as builder
ARG DOCKER_RUNNING=yes
ARG DEBIAN_FRONTEND=noninteractive
RUN apt update && apt install -yq protobuf-compiler tzdata ca-certificates
RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.27.1
COPY . /project
RUN cd /project/proto && make
RUN /project/server/build/build-server.sh prod
# clean stage
FROM alpine
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
COPY --from=builder /usr/share/zoneinfo/Asia/Shanghai /usr/share/zoneinfo/Asia/
COPY --from=builder /project/server/dist/prod/orca-server-next /orca-server
RUN apk add --no-cache gzip brotli
ENV TZ=Asia/Shanghai
CMD ["/orca-server"]

25
misc/docker/Makefile Normal file
View File

@@ -0,0 +1,25 @@
SHELL:=/bin/bash
build: git
sudo docker build -t orca -f Dockerfile ../..
run: build
sudo docker run --env "ORCA_MYSQL=orca:orca@tcp(172.17.0.1:3306)/orca" \
--mount type=bind,source=/tmp/orca/tmp,target=/tmp \
--mount type=bind,source=/tmp/orca/server/dist/prod/log,target=/log \
orca
install: build
sudo docker save orca > docker-orca.tar
scp docker-orca.tar freya:/tmp
scp install.sh freya:/tmp
ssh freya "chmod +x /tmp/install.sh && /tmp/install.sh && rm /tmp/install.sh"
git:
../../server/build/git-hash.sh > ../../server/build/.git-hash
clean:
sudo docker stop orca || :
sudo docker rm orca || :
sudo docker rmi orca || :
sudo docker image prune --force

24
misc/docker/install.sh Normal file
View File

@@ -0,0 +1,24 @@
#!/bin/bash
TARGET="Freya"
if [ "$HOSTNAME" != "$TARGET" ]; then
>&2 echo only run in server "$TARGET"
exit 1
fi
sudo docker stop orca
sudo docker rm orca
sudo docker rmi orca
sudo cat /tmp/docker-orca.tar | sudo docker load
sudo docker run -d --name orca \
--env "TANK_MYSQL=orca:orca@tcp(172.17.0.1:3306)/orca" \
--env "STATIC_DIR=/tmp" \
--env "OUTPUT_PATH=/output" \
--mount type=bind,source=/www/orca/output,target=/output \
--mount type=bind,source=/www/orca/log,target=/log \
--mount type=bind,source=/www/orca/static,target=/tmp \
--restart always \
orca