Docker - serwer www, mysql i phpmyadmin
Data: 2019-04-28, autor: Michał MisztalW poprzednim wpisie popełniłem drobną instancję SQL Server 2017 na Dockerze. Po drobnych testach okazało się, że wszystko działa, Subiekt GT działa. Pojawiły się niestety problemy z wydajnością. O ile jeżeli chodzi o odczyt danych z bazy nie jest aż tak źle to zapis bywa trzykrotnie dłuższy niż w przypadku Windowsa. Powodem tego jest ficzer dodany przez Microsoft w wersji CU6 SQL Servera. Wątek o problemach z wydajnością można znaleźć tutaj.
No cóż, czekamy aż SQL Server wydorośleje. Na razie jednak utworzymy sobie konfigurację a'la XAMP: MySQL, Apache2 i phpmyadmin. A to wszystko po to aby zawsze mieć jednakową konfigurację bez względu na stan maszyny. No i oczywiście tą konfigurację przenosić między komputerami. Można to zrobić na kilka sposobów, dla nieposiadających płatnego konta na Docker Hub polecam GIT.
No i tak, przepisy na obrazy wyglądają tak
mariadb/Dockerfile
FROM mariadb ENV MYSQL_ALLOW_EMPTY_PASSWORD='yes' VOLUME /var/lib/mysql
phpmyadmin/Dockerfile
FROM phpmyadmin/phpmyadmin EXPOSE 80
php_apache/Dockerfile (pliku apache2.conf nie wklejam bo zmieniłem tylko wpis uwzględniający pliki .htaccess)
FROM php:apache ENV APACHE_DOCUMENT_ROOT /var/www/html/public COPY apache2.conf /etc/apache2/apache2.conf RUN a2enmod rewrite && docker-php-ext-install mysqli RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf EXPOSE 80
Żeby zbudować obraz posłużymy się skryptem
#!/bin/bash
docker rmi i_mdb i_phpa i_php_apache
docker build -t i_mdb ./mariadb
docker build -t i_phpa ./phpmyadmin
docker build -t i_php_apache ./php_apache
No i jeszcze docker-compose.yml, kontenery sobie oczywiście powiążemy
version: '3.7' services: mdb: image: i_mdb volumes: - /mnt/ext_dane/docker_mariadb_db:/var/lib/mysql phpm: image: i_phpa ports: - "8080:80" links: - mdb:db apache: image: i_php_apache ports: - "80:80" volumes: - /home/csk/repos/php_ci_dps:/var/www/html links: - mdb:db
Zamiast użyć gotowych obrazów można ustawić dane budowania ale u mnie coś to nie chce działać.
No i oto phpmyadmin w kontenerze
[user@komputer ~]$ curl -I http://127.0.0.1:8080 HTTP/1.1 200 OK Server: nginx Date: Sun, 28 Apr 2019 18:27:42 GMT Content-Type: text/html; charset=utf-8 Connection: keep-alive X-Powered-By: PHP/7.2.14
No cóż, Na SQL Server przyjdzie jeszcze poczekać ale w międzyczasie na pewno nie będę się nudził. W tym wątku podobno migracja na Linuksa drastycznie zwiększyła wydajność serwera. Wersja CU5 jest dużo szybsza niż CU13. Ale jeśli ma to się wiązać z gorszym zabezpieczeniem danych to zaczekam.