Skip to content

feat: add sql docker compose to simplify local env startup #194

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 1 commit into
base: develop
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .env.demo
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# 设置环境变量示例
MYSQL_ROOT_PASSWORD=
MYSQL_DATABASE=tiny_engine_data_java


48 changes: 48 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: te_java_services_mysql

services:
mysql:
env_file:
- .env
container_name: te_java_mysql
image: mysql:8
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
restart: always
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-}
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
MYSQL_DATABASE: ${MYSQL_DATABASE:-tiny_engine_data_java}
volumes:
- te-java-mysql-volumes:/var/lib/mysql
ports:
- 3306:3306
networks:
- te-java-mysql

# database explorer
phpmyadmin:
env_file:
- .env
image: phpmyadmin
# for arm64 macos
# image: arm64v8/phpmyadmin
restart: always
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-}
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
MYSQL_DATABASE: ${MYSQL_DATABASE:-tiny_engine_data_java}
PMA_HOST: "mysql"
ports:
- 8080:80
networks:
- te-java-mysql
depends_on:
- mysql

volumes:
te-java-mysql-volumes:

networks:
te-java-mysql:
name: te-java-mysql
driver: bridge
8 changes: 8 additions & 0 deletions docker_init_data.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/bash

# set -ex
# 复制 sql script 到 docker 容器内部
docker cp init_database_mysql.sh te_java_mysql:/tmp/
docker cp ./app/src/main/resources/sql/mysql te_java_mysql:/tmp/sql
# 在 docker 容器内部执行 script
docker exec te_java_mysql sh -c "chmod +x /tmp/init_database_mysql.sh && /tmp/init_database_mysql.sh"
37 changes: 37 additions & 0 deletions init_database_mysql.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#!/bin/bash

# set -ex

# read variables from environment
db_host=${TE_DATABASE_HOST:-127.0.0.1}
db_port=${TE_DATABASE_PORT:-3306}
db_username=${TE_DATABASE_USER:-root}
db_password=${TE_DATABASE_PASSWORD:-} # default to empty password
db_name=${TE_DATABASE_NAME:-tiny_engine_data_java}

# prepare MySQL param
param="--default-character-set=utf8mb4 -h $db_host -P $db_port -u $db_username"
if [ -n "$db_password" ]; then
param="$param -p$db_password"
fi


# reset database
echo "init database $db_name in local"
mysql $param -e "DROP DATABASE IF EXISTS $db_name"
mysql $param -e "CREATE DATABASE $db_name CHARACTER SET utf8mb4"



# find all sql files and sort
sql_files=$(ls /tmp/sql/*.sql | sort)
echo "🤖 Running the following SQL files:"

# execute sql files
for file in $sql_files; do
echo "🔖 Running $file..."
mysql $param $db_name < "$file"
done

echo "🎉 prepare database $db_name done"
mysql $param -e "USE $db_name; SHOW TABLES;"
Loading