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