Stellt euch vor ihr bekommt die undankbare Aufgabe ein altes WordPress Projekt zu upgraden. Das Projekt hinkt bereits zwei Major Releases hinterher. Das bedeutet ihr könnt nicht einfach im Produktivsystem ein upgrade vollziehen. Ihr müsst euch das Produsystem auf eure lokale Entwicklungsumgebung kopieren.
Dafür eignet sich Docker ganz gut. Heute gehe ich davon aus, dass wir nur die Datenbank dockerisieren. Dann schieben wir den Datenbankdump der Produktivumgebung in unseren Docker.
Vorraussetzung: Ihr habt docker auf eurem System, könnt mit der Konsole umgehen und hab bereits den Datenbank Dump.
- Erstellt ein Order wo ihr Euer Projekt erstellen möchtet.
- Erstellt eine docker-compose.yml
- kopiert diese Befehle in die eben erstellte docker-compose.yml rein *
- erstellt zwei Ordner: my-datavolume und dumps
- legt das SQL Dump file in diesen Ordner. Tut euch ein gefallen um bennent die Datei aussagekräftig um. Zum Beispiel
2021-11-11-dump.sql
- startet docker-compose mit
docker-compose up -d
- checkt ob der container vorhanden ist:
docker ps
- loggt euch jetzt in euer Container ein
docker exec -it my_mysql bash
- loggt euch innerhalb des Containers in MySql ein mit
mysql -uroot -p
- Okay, mir ist es gerade auch einwenig peinlich aber Passwort ist :
password
- gebt ein
source /home/2011-11-11-dump.sql
- A viola! Die Datenbank ist da
exit
und dann noch mal exit
und ihr seid wieder im HOST
Über ein SQLTool wie MySQL Workbench könnt ihr solange der Conatiner läuft drauf zugreifen. Wenn ihr die DB in eure DB UI einfügen möchtet dann beachtet das der PORT nicht default 3306 ist sonder ich ihn in der docker-compose.yml mit 3309 angegeben habe. Das könnt ihr natürlich anpassen. Dafür müsst ihr nur den container wieder mit docker-compose down
runterfahren.
* das docker-compose.yml file:
version: '3.1'
services:
wordpress:
image: wordpress:4
restart: always
ports:
- '8090:80'
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
volumes:
- ./wordpress:/var/www/html
db:
image: mysql:5.7
restart: always
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: password
volumes:
- ./db:/var/lib/mysql
- ./schema/:/home/dumps
#- ./schema/:/docker-entrypoint-initdb.d
ports:
- "3309:3306"
volumes:
wordpress:
db: