Már régóta tervezek egy posztot a honlapomra erről, szóval itt a remek alkalom, hogy megírjam a vázlatot.
Én minden projektnek külön containert adok, ha csak ideiglenesen használom (le kell húzni, hogy lokálisan változtassak valamit, aztán mehet vissza), akkor egy docker-compose down -d
fel is takarít utána.
Az ügyfeleknek szánt fejlesztői szerveremen egy webserver (php:7.0-apache), egy adatbázis (mysql:5.7) és egy phpmyadmin fut, az alábbi konfig szerint:
/home/username
- repo
- server
- www
- a repo a bare git repo-k helye.
- a www a tényleges fájlok helye (/var/www, ezen belül lesznek a konyvtárak, hostnevenként)
- server pedig a Docker konfig fájlok helye
docker-compose.yml a /home/username/server-ben:
version: '2'
services:
webserver:
build:
context: .
dockerfile: Dockerfile_webserver
container_name: webserver
links:
- database
ports:
- 80:80
working_dir: /home/username/www/
volumes:
- ../www/:/var/www/
depends_on:
- database
restart: always
database:
image: mysql:5.7
container_name: database
ports:
- 3306:3306
environment:
- MYSQL_DATABASE=staging
- MYSQL_ROOT_PASSWORD=wWfAJ26exbjCUfRU
- MYSQL_USER=webmenedzser_YXFyDoGuh4PHATQ
- MYSQL_PASSWORD=NdYEbRGJxouyKHimDhkFnUyxwq1omG8KNLOHafdl
restart: always
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
ports:
- 2999:80
volumes:
- /sessions
links:
- database:db
restart: always
volumes:
db:
Dockerfile_webserver a /home/saboteur/server-ben:
FROM php:7.0-apache
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libjpeg-dev \
libmcrypt-dev \
libpng12-dev \
&& docker-php-ext-install -j$(nproc) iconv mcrypt \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include --with-jpeg-dir=/usr/include \
&& docker-php-ext-install -j$(nproc) gd mysqli
RUN a2enmod rewrite expires
#VOLUME /home/saboteur/www/
ADD sites.conf /etc/apache2/sites-enabled/000-default.conf
CMD ["apache2-foreground"]
sites.conf a server-ben:
ServerName dev.domain.hu
ServerAdmin root@domain.hu
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
DocumentRoot /var/www/aldomain1.domain.hu
ServerName aldomain1.domain
ServerAlias www.aldomain1.domain
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
DocumentRoot /var/www/aldomain2.domain.hu
ServerName aldomain2.domain.hu
ServerAlias www.aldomain2.domain.hu
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Ha új vhost kell, akkor veszek ide fel egyet, és nyomok egy docker-compose up --build -d
-t. Ezzel megvan az apache restart is, újraépült a container, és máris elérhető az odairányított domain tartalma.