mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
Docker: Improve mariadb init
Signed-off-by: Kevin Morris <kevr@0cost.org>
This commit is contained in:
parent
4442ba6703
commit
6c7bb04b93
5 changed files with 39 additions and 30 deletions
|
@ -32,8 +32,10 @@ services:
|
||||||
mariadb:
|
mariadb:
|
||||||
image: aurweb:latest
|
image: aurweb:latest
|
||||||
init: true
|
init: true
|
||||||
|
environment:
|
||||||
|
- DB_HOST="%"
|
||||||
entrypoint: /docker/mariadb-entrypoint.sh
|
entrypoint: /docker/mariadb-entrypoint.sh
|
||||||
command: /docker/scripts/run-mariadb.sh mysqld_safe --datadir=/var/lib/mysql
|
command: /usr/bin/mysqld_safe --datadir=/var/lib/mysql
|
||||||
ports:
|
ports:
|
||||||
# This will expose mariadbd on 127.0.0.1:13306 in the host.
|
# This will expose mariadbd on 127.0.0.1:13306 in the host.
|
||||||
# Ex: `mysql -uaur -paur -h 127.0.0.1 -P 13306 aurweb`
|
# Ex: `mysql -uaur -paur -h 127.0.0.1 -P 13306 aurweb`
|
||||||
|
@ -136,6 +138,7 @@ services:
|
||||||
init: true
|
init: true
|
||||||
environment:
|
environment:
|
||||||
- AUR_CONFIG=/aurweb/conf/config
|
- AUR_CONFIG=/aurweb/conf/config
|
||||||
|
- DB_HOST=mariadb
|
||||||
entrypoint: /docker/php-entrypoint.sh
|
entrypoint: /docker/php-entrypoint.sh
|
||||||
command: /docker/scripts/run-php.sh
|
command: /docker/scripts/run-php.sh
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
@ -170,6 +173,7 @@ services:
|
||||||
init: true
|
init: true
|
||||||
environment:
|
environment:
|
||||||
- AUR_CONFIG=conf/config
|
- AUR_CONFIG=conf/config
|
||||||
|
- DB_HOST=mariadb
|
||||||
entrypoint: /docker/fastapi-entrypoint.sh
|
entrypoint: /docker/fastapi-entrypoint.sh
|
||||||
command: /docker/scripts/run-fastapi.sh "${FASTAPI_BACKEND}"
|
command: /docker/scripts/run-fastapi.sh "${FASTAPI_BACKEND}"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
@ -269,6 +273,7 @@ services:
|
||||||
init: true
|
init: true
|
||||||
environment:
|
environment:
|
||||||
- AUR_CONFIG=conf/config
|
- AUR_CONFIG=conf/config
|
||||||
|
- DB_HOST=mariadb
|
||||||
entrypoint: /docker/test-mysql-entrypoint.sh
|
entrypoint: /docker/test-mysql-entrypoint.sh
|
||||||
command: /docker/scripts/run-pytests.sh clean
|
command: /docker/scripts/run-pytests.sh clean
|
||||||
stdin_open: true
|
stdin_open: true
|
||||||
|
@ -324,6 +329,7 @@ services:
|
||||||
init: true
|
init: true
|
||||||
environment:
|
environment:
|
||||||
- AUR_CONFIG=conf/config
|
- AUR_CONFIG=conf/config
|
||||||
|
- DB_HOST=mariadb
|
||||||
entrypoint: /docker/tests-entrypoint.sh
|
entrypoint: /docker/tests-entrypoint.sh
|
||||||
command: /docker/scripts/run-tests.sh
|
command: /docker/scripts/run-tests.sh
|
||||||
stdin_open: true
|
stdin_open: true
|
||||||
|
|
|
@ -1,6 +1,33 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -eou pipefail
|
set -eou pipefail
|
||||||
|
|
||||||
mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
|
MYSQL_DATA=/var/lib/mysql
|
||||||
|
DB_HOST="localhost"
|
||||||
|
|
||||||
|
mariadb-install-db --user=mysql --basedir=/usr --datadir=$MYSQL_DATA
|
||||||
|
|
||||||
|
# Start it up.
|
||||||
|
mysqld_safe --datadir=$MYSQL_DATA --skip-networking &
|
||||||
|
while ! mysqladmin ping 2>/dev/null; do
|
||||||
|
sleep 1s
|
||||||
|
done
|
||||||
|
|
||||||
|
# Configure databases.
|
||||||
|
DATABASE="aurweb" # Persistent database for fastapi/php-fpm.
|
||||||
|
TEST_DB="aurweb_test" # Test database (ephemereal).
|
||||||
|
|
||||||
|
echo "Taking care of primary database '${DATABASE}'..."
|
||||||
|
mysql -u root -e "CREATE USER IF NOT EXISTS 'aur'@'$DB_HOST' IDENTIFIED BY 'aur';"
|
||||||
|
mysql -u root -e "CREATE DATABASE IF NOT EXISTS $DATABASE;"
|
||||||
|
mysql -u root -e "GRANT ALL ON ${DATABASE}.* TO 'aur'@'$DB_HOST';"
|
||||||
|
|
||||||
|
# Drop and create our test database.
|
||||||
|
echo "Dropping test database '$TEST_DB'..."
|
||||||
|
mysql -u root -e "DROP DATABASE IF EXISTS $TEST_DB;"
|
||||||
|
mysql -u root -e "CREATE DATABASE $TEST_DB;"
|
||||||
|
mysql -u root -e "GRANT ALL ON ${TEST_DB}.* TO 'aur'@'$DB_HOST';"
|
||||||
|
echo "Created new '$TEST_DB'!"
|
||||||
|
|
||||||
|
mysqladmin -uroot shutdown
|
||||||
|
|
||||||
exec "$@"
|
exec "$@"
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
mysqld_safe --datadir=/var/lib/mysql --skip-networking &
|
|
||||||
until mysqladmin ping --silent; do
|
|
||||||
sleep 1s
|
|
||||||
done
|
|
||||||
|
|
||||||
# Create test database.
|
|
||||||
mysql -u root -e "CREATE USER 'aur'@'%' IDENTIFIED BY 'aur'" \
|
|
||||||
2>/dev/null || /bin/true
|
|
||||||
|
|
||||||
# Create a brand new 'aurweb_test' DB.
|
|
||||||
mysql -u root -e "DROP DATABASE aurweb_test" 2>/dev/null || /bin/true
|
|
||||||
mysql -u root -e "CREATE DATABASE aurweb_test"
|
|
||||||
mysql -u root -e "GRANT ALL PRIVILEGES ON aurweb_test.* TO 'aur'@'%'"
|
|
||||||
|
|
||||||
# Create the 'aurweb' DB if it does not yet exist.
|
|
||||||
mysql -u root -e "CREATE DATABASE aurweb" 2>/dev/null || /bin/true
|
|
||||||
mysql -u root -e "GRANT ALL PRIVILEGES ON aurweb.* TO 'aur'@'%'"
|
|
||||||
|
|
||||||
mysql -u root -e "FLUSH PRIVILEGES"
|
|
||||||
|
|
||||||
# Shutdown mariadb.
|
|
||||||
mysqladmin -uroot shutdown
|
|
||||||
|
|
||||||
exec "$@"
|
|
|
@ -23,7 +23,8 @@ while [ $# -ne 0 ]; do
|
||||||
done
|
done
|
||||||
|
|
||||||
# Initialize the new database; ignore errors.
|
# Initialize the new database; ignore errors.
|
||||||
python -m aurweb.initdb 2>/dev/null || /bin/true
|
python -m aurweb.initdb 2>/dev/null || \
|
||||||
|
(echo "Error: aurweb.initdb failed; already initialized?" && /bin/true)
|
||||||
|
|
||||||
# Run pytest with optional targets in front of it.
|
# Run pytest with optional targets in front of it.
|
||||||
make -C test "${PARAMS[@]}" pytest
|
make -C test "${PARAMS[@]}" pytest
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -eou pipefail
|
set -eou pipefail
|
||||||
|
|
||||||
|
[[ -z "$DB_HOST" ]] && echo 'Error: $DB_HOST required but missing.' && exit 1
|
||||||
|
|
||||||
DB_NAME="aurweb_test"
|
DB_NAME="aurweb_test"
|
||||||
DB_HOST="mariadb"
|
|
||||||
DB_USER="aur"
|
DB_USER="aur"
|
||||||
DB_PASS="aur"
|
DB_PASS="aur"
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue