====== Yii2 with Docker ======
===== Fragen =====
* php.ini Datei Änderungen definieren?
===== Vorarbeiten =====
Im übergeordneten Ordner der Projekte, ein Yii2-Projekt mit composer erstellen:
$ composer create-project --prefer-dist yiisoft/yii2-app-basic yii2-test-docker
$ cd yii2-test-docker
Verzeichnis anlegen:
$ mkdir .docker/
Dateien anlegen
$ touch .docker/Dockerfile
$ touch .docker/vhost.conf
$ touch docker-compose.yml
Datei ''.docker/Dockerfile'' anlegen:
FROM php:7.1.8-apache
MAINTAINER Joachim Werner
COPY . /srv/app
COPY .docker/vhost.conf /etc/apache2/sites-available/000-default.conf
RUN chown -R www-data:www-data /srv/app \
&& a2enmod rewrite
Datei ''.docker/vhost.conf'' anlegen:
DocumentRoot /srv/app/web
AllowOverride all
Require all granted
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Das Image bauen:
$ docker build --file .docker/Dockerfile -t yii2-test-docker .
===== Apache starten =====
(Windows) IP der Maschine herausfinden:
''$ docker-machine ip default''
Den Container starten:
$ docker run \
--name yii2-app
--rm -p 8080:80
yii2-test-docker
===== Mit docker-compose starten =====
Datei //./docker-compose.yml// erstellen:
version: '3'
services:
app:
build:
context: .
dockerfile: .docker/Dockerfile
image: yii2-test-docker
ports:
- 8080:80
Evtl. eine bereits laufenden Container stoppen:
$ docker ps
$ docker kill CONTAINER_ID
Das image bauen, und den Container starten:
$ docker-compose up --build
Aufruf über [[http://ip.der.machine:8080]]
===== Ein Verzeichnis für lokale Entwicklung hinzufügen =====
version: '3'
services:
app:
build:
context: .
dockerfile: .docker/Dockerfile
image: yii2-test-docker
ports:
- 8080:80
volumes:
- .:/srv/app
===== MySQL hinzu fügen =====
Datei //docker-compose.yml// erweitern:
version: '3'
services:
app:
build:
context: .
dockerfile: .docker/Dockerfile
image: yii2-test-docker
ports:
- 8080:80
volumes:
- .:/srv/app
links:
- mysql
environment:
DB_HOST: mysql
DB_DATABASE: yii2-test_docker
DB_USERNAME: app
DB_PASSWORD: password
mysql:
image: mysql:5.7
ports:
- 13306:3306
environment:
MYSQL_DATABASE: yii2-test_docker
MYSQL_USER: app
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: password
Die Datei //.docker/Dockerfile// bearbeiten:
FROM php:7.2.8-apache
MAINTAINER Joachim Werner
COPY . /srv/app
COPY .docker/vhost.conf /etc/apache2/sites-available/000-default.conf
WORKDIR /srv/app
RUN apt-get update -y && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-install -j$(nproc) iconv mbstring pdo pdo_mysql \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd
RUN chown -R www-data:www-data /srv/app
RUN a2enmod rewrite
===== Links =====
* [[https://www.yiiframework.com/doc/guide/2.0/en/tutorial-docker|Yii Tutorial Docker]]
* [[https://www.yiiframework.com/wiki/783/running-applications-with-docker|Running applications with Docker]]
* [[https://yktoo.com/en/blog/post/308|Tutorial: development with Yii/PHP/MySQL using Docker]]