====== 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]]