Docker webfejlesztéshez
Dockerfile és docker-compose.yml egy új projekt elkezdéséhez vagy egy meglévő tuningolásához:
Először is, hogy ne kelljen portokkal szórakozni, készítsünk egy új docker hálózatot és a 80-as portra rakjunk egy proxyt.
Új hálózathoz a következő parancs kell:
docker network create nginx-proxy
A proxyhoz pedig ez:
docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro --name my-nginx-proxy --net nginx-proxy jwilder/nginx-proxy
A jwilder/nginx-proxy sajátossága, hogy más containerek indításánál a VIRTUAL_HOST environmentben beállított címet irányítja át. Egyetlen extra dolgunk, hogy a hosts fájlban megadjuk a címet localhostra.
Például:
127.0.0.1 web.docker
A Dockerfile, ami összeállítja az apache szerverünket, a következő:
FROM php:7.0-apache
RUN apt-get update && apt-get install -y \
curl acl git unzip \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng12-dev \
libicu-dev \
&& pecl install xdebug \
&& pecl install intl \
&& docker-php-ext-install -j$(nproc) iconv mcrypt mysqli pdo pdo_mysql mbstring opcache \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-configure intl \
&& docker-php-ext-install intl \
&& docker-php-ext-install -j$(nproc) gd
RUN curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer
RUN echo "short_open_tag=Off" > /usr/local/etc/php/php.ini
ADD www /var/www/html
Hogy ne kelljen egyesével containereket indítani és összecsatolgatni egymáshoz, használjuk a következő docker-compose.yml-t:
version: '2'
services:
web:
build:
context: .
volumes:
- ./www:/var/www/html
links:
- db:mysql
environment:
- VIRTUAL_HOST=web.docker
networks:
- proxy-tier
db:
image: mysql
volumes:
- ./.mysqldata:/var/lib/mysql:rw
ports:
- "33306:3306"
environment:
- MYSQL_ROOT_PASSWORD=root
networks:
- proxy-tier
networks:
proxy-tier:
external:
name: nginx-proxy
A Dockerfile buildeléséhez a parancs:
docker-compose build
Az indításhoz:
docker-compose up
Ha daemonként akarjuk futtatni, akkor adjuk hozzá a -d kapcsolót vagy használjuk ezt:
docker-compose start