Übersetzungen dieser Seite:
  • de

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:

Dockerfile
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:

vhost.conf
<VirtualHost *:80>
    DocumentRoot /srv/app/web
 
    <Directory "/srv/app/web">
        AllowOverride all
        Require all granted
    </Directory>
 
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

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:

docker-compose.yml
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

docker-compose.yml
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:

docker-compose.yml
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:

Dockerfile
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