39 lines
1.1 KiB
PowerShell
39 lines
1.1 KiB
PowerShell
$ErrorActionPreference = "Stop"
|
|
|
|
$CONTAINER = "ewc2025-mysql"
|
|
$IMAGE = "mysql:8.4"
|
|
$ROOT_PASSWORD = "ewc2025root"
|
|
$DATABASE = "ewc2025"
|
|
$PORT = "13306"
|
|
|
|
$SQL_DIR = Resolve-Path "$PSScriptRoot\..\sql"
|
|
|
|
$exists = docker ps -a --format '{{.Names}}' | Where-Object { $_ -eq $CONTAINER }
|
|
|
|
if ($exists) {
|
|
Write-Host "Container '$CONTAINER' already exists -- starting it."
|
|
docker start $CONTAINER
|
|
} else {
|
|
Write-Host "Creating and starting '$CONTAINER'."
|
|
docker run -d `
|
|
--name $CONTAINER `
|
|
-e MYSQL_ROOT_PASSWORD=$ROOT_PASSWORD `
|
|
-e MYSQL_DATABASE=$DATABASE `
|
|
-p "${PORT}:3306" `
|
|
-v "${CONTAINER}-data:/var/lib/mysql" `
|
|
-v "${SQL_DIR}\schema.sql:/docker-entrypoint-initdb.d/01_schema.sql:ro" `
|
|
$IMAGE
|
|
}
|
|
|
|
Write-Host "Waiting for MySQL to be ready..."
|
|
while ($true) {
|
|
$result = docker exec $CONTAINER mysqladmin ping -uroot -p"$ROOT_PASSWORD" --silent 2>$null
|
|
if ($LASTEXITCODE -eq 0) { break }
|
|
Start-Sleep -Seconds 1
|
|
}
|
|
|
|
Write-Host "MySQL 8.4 is up."
|
|
Write-Host " Host: 127.0.0.1:${PORT}"
|
|
Write-Host " Database: $DATABASE"
|
|
Write-Host " User: root / $ROOT_PASSWORD"
|