Skip to content

Commit 572a479

Browse files
committed
feat: add sql docker compose to simplify local env startup
1 parent a95eae3 commit 572a479

File tree

4 files changed

+98
-0
lines changed

4 files changed

+98
-0
lines changed

.env.demo

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# 设置环境变量示例
2+
MYSQL_ROOT_PASSWORD=
3+
MYSQL_DATABASE=tiny_engine_data_java
4+
5+

docker-compose.yml

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: te_java_services_mysql
2+
3+
services:
4+
mysql:
5+
env_file:
6+
- .env
7+
container_name: te_java_mysql
8+
image: mysql:8
9+
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
10+
restart: always
11+
environment:
12+
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-}
13+
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
14+
MYSQL_DATABASE: ${MYSQL_DATABASE:-tiny_engine_data_java}
15+
volumes:
16+
- te-java-mysql-volumes:/var/lib/mysql
17+
ports:
18+
- 3306:3306
19+
networks:
20+
- te-java-mysql
21+
22+
# database explorer
23+
phpmyadmin:
24+
env_file:
25+
- .env
26+
image: phpmyadmin
27+
# for arm64 macos
28+
# image: arm64v8/phpmyadmin
29+
restart: always
30+
environment:
31+
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-}
32+
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
33+
MYSQL_DATABASE: ${MYSQL_DATABASE:-tiny_engine_data_java}
34+
PMA_HOST: "mysql"
35+
ports:
36+
- 8080:80
37+
networks:
38+
- te-java-mysql
39+
depends_on:
40+
- mysql
41+
42+
volumes:
43+
te-java-mysql-volumes:
44+
45+
networks:
46+
te-java-mysql:
47+
name: te-java-mysql
48+
driver: bridge

docker_init_data.sh

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#!/bin/bash
2+
3+
# set -ex
4+
# 复制 sql script 到 docker 容器内部
5+
docker cp init_database_mysql.sh te_java_mysql:/tmp/
6+
docker cp ./app/src/main/resources/sql/mysql te_java_mysql:/tmp/sql
7+
# 在 docker 容器内部执行 script
8+
docker exec te_java_mysql sh -c "chmod +x /tmp/init_database_mysql.sh && /tmp/init_database_mysql.sh"

init_database_mysql.sh

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#!/bin/bash
2+
3+
# set -ex
4+
5+
# read variables from environment
6+
db_host=${TE_DATABASE_HOST:-127.0.0.1}
7+
db_port=${TE_DATABASE_PORT:-3306}
8+
db_username=${TE_DATABASE_USER:-root}
9+
db_password=${TE_DATABASE_PASSWORD:-} # default to empty password
10+
db_name=${TE_DATABASE_NAME:-tiny_engine_data_java}
11+
12+
# prepare MySQL param
13+
param="--default-character-set=utf8mb4 -h $db_host -P $db_port -u $db_username"
14+
if [ -n "$db_password" ]; then
15+
param="$param -p$db_password"
16+
fi
17+
18+
19+
# reset database
20+
echo "init database $db_name in local"
21+
mysql $param -e "DROP DATABASE IF EXISTS $db_name"
22+
mysql $param -e "CREATE DATABASE $db_name CHARACTER SET utf8mb4"
23+
24+
25+
26+
# find all sql files and sort
27+
sql_files=$(ls /tmp/sql/*.sql | sort)
28+
echo "🤖 Running the following SQL files:"
29+
30+
# execute sql files
31+
for file in $sql_files; do
32+
echo "🔖 Running $file..."
33+
mysql $param $db_name < "$file"
34+
done
35+
36+
echo "🎉 prepare database $db_name done"
37+
mysql $param -e "USE $db_name; SHOW TABLES;"

0 commit comments

Comments
 (0)