Ebből a leírásból megtudható, hogy az első és második részben elkészített image-ből készített konténereket hogyan indítjuk automatizáltan, illetve kiegészítjük még a redis és maradb szerverekkel. Ezek használatára a php-fpm alkalmazás szerverünket már felkészítettük.
Host Apache beállítása
Elképzelésem szerint a weboldalam mail.zsoltina.eu domain néven fog futni, a szerveremen lévő apache a 80-as porton figyel. a konfigurációm szerint az erre a névre érkező kéréseket át proxy -za a konténerben futó 8080-as porton figyelő apache szervernek, majd a tőle kapott választ továbbítja a kérő felé. Ehhez telepítsük a gazda gépre a szükséges csomagokat:
apt install apache2
Engedélyezzük a szükséges modulokat:
a2enmod proxy proxy_http systemctl restart apache2
Ezután készítsük el a konfigurációnkat:
cd /etc/apache2/site-available && nano mail.zsoltina.conf
<VirtualHost *:80> ServerName mail.zsoltina.eu ProxyPass / http://localhost:8080/ <Location /> ProxyPassReverse http://localhost:8080/ Require all granted </Location> </VirtualHost>
Engedélyezzük a beállításunkat:
a2ensite mail.zsoltina.conf
Ez ugyan egy nagyon egyszerű konfiguráció, de a célnak megfelel.
Redis szerver
A Docker Hub-ról töltsünk le egy redis szervert és illesszük a rendszerünkhöz:
docker pull redis:3-alpine
Teszteljük le:
docker run -ti --rm redis:3-alpine
CTRL+C -vel ki tudunk lépni.
MariaDB szerver
Szintén a Docker Hub-ról szedjük le a mariadb adatbáziskezelő rendszer image-t:
docker pull mariadb:latest
Docker Compose (automatikus indítás)
Készítsük el az egyes konténerek automatikus indítását és konfigurálását leíró yaml fájlt, melyet a docker-compose-al fogunk tudni használni:
nanno /usr/local/etc/apache/apache.yml
# Apache SERVER ########## Apache YAML ######## # nano /usr/local/etc/apache/apache.yml version: "2" services: apache: image: slapic/apache:latest ports: - 8080:8080/tcp volumes: - /usr/local/etc/apache/www:/var/www/ tmpfs: /run:rw,noexec,nosuid,size=65536k environment: SERVERNAME: mail.zsoltina.eu SERVERADMIN: albert@vanyi.eu HTTPPORT: 8080 DOCROOT: /var/www/ FCGI: php:9000 depends_on: - php php: image: slapic/php:7.0-alpine volumes: - /usr/local/etc/apache/www:/var/www/ depends_on: - dbserver - redis dbserver: image: mariadb:latest volumes: - /usr/local/etc/apache/db:/var/lib/mysql/ #Az adatbázis beállításához szükséges adatoknak értelmszerűen csak az első alkalommal kellenk environment: MYSQL_ROOT_PASSWORD: <rootpasswd> MYSQL_DATABASE: <db name> MYSQL_USER: <db user> MYSQL_PASSWORD: <db passwd> redis: image: redis:3-alpine volumes: - /usr/local/etc/apache/redis:/data/ tmpfs: - /run:rw,noexec,nosuid,size=65536k #volumes: # db: # redis:
A konfigurációból is kiolvasható, hogy a beállítások gyökérkönyvtáraként a: /usr/local/etc/apache használom.
Természetesen ide kerültek az apache és a php konténer által használt konfigurációk is a megfelelő könyvtárszerkezettel és a yaml fájlt is itt hoztam létre.
Szolgáltatások automatikus indítása
Amennyiben azt szeretnénk elérni, hogy a rendszerünk indításával együtt induljanak el a konténereink, tegyük meg a szükséges lépéseket:
nano /etc/systemd/system/docker_apache.service
[Unit] Description=Docker Zsoltina Service Requires=docker.service [Service] TimeoutStartSec=0 ExecStartPre=-/usr/bin/docker-compose -p zsoltina -f /usr/local/etc/apache/apache.yml down ExecStart=-/usr/bin/docker-compose -p zsoltina -f /usr/local/etc/apache/apache.yml up ExecStop=-/usr/bin/docker-compose -p zsoltina -f /usr/local/etc/apache/apache.yml down [Install] WantedBy=multi-user.target
Ezt követően indítsuk el a szolgáltatásokat:
systemctl enable docker_apache.service systemctl start docker_apache.service