Docker - serwer www, mysql i phpmyadmin

Data: 2019-04-28, autor: Michał Misztal

W 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.

Skomentuj lub zgłoś błąd

© Michał Misztal 2019