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:
<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 .
(Windows) IP der Maschine herausfinden:
$ docker-machine ip default
Den Container starten:
$ docker run \ --name yii2-app --rm -p 8080:80 yii2-test-docker
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
version: '3' services: app: build: context: . dockerfile: .docker/Dockerfile image: yii2-test-docker ports: - 8080:80 volumes: - .:/srv/app
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