Einrichten der Arbeitsumgebung in Docker für die yii-Framework-Anwendung

Um das Arbeitsumfeld schnell zu verbessern, gibt es viele Möglichkeiten. Eine davon besteht darin, alle erforderlichen Dienste in Docker-Containern bereitzustellen. Um die Erstellung neuer Projekte im Yii-Framework zu beschleunigen, habe ich eine so kleine Anweisung geschrieben, dass die Entwickler in unserem Team sie verwenden.


Zu Beginn sollten Sie Docker, Docker-Compose, PHP und PHP-Composer haben.
Wir erstellen den Ordner mit dem Projekt und dem Docker- Ordner darin.


mkdir project-dir cd project-dir && mkdir docker 

Erstellen Sie im Docker- Ordner die Konfigurationsdatei für unseren Dockerfile- Container.


 #    nginx  php FROM richarvey/nginx-php-fpm #     ADD app /var/www/app #       RUN rm -Rf /etc/nginx/sites-enabled/* #    ADD docker/conf/nginx/site.conf /etc/nginx/sites-available/site.conf #   RUN ln -s /etc/nginx/sites-available/site.conf /etc/nginx/sites-enabled/site.conf 

Erstellen Sie im selben Docker- Ordner die Datei docker-compose.yml , um die Entwicklungsumgebung zu öffnen .


 #   docker-compose version: '3' #    deafult    networks: default: driver: bridge #    services: #   - app: #   Dockerfile build: #      context: ../ dockerfile: ./docker/Dockerfile #   80  ports: - "80:80" #        networks: - default #    db depends_on: - db #       volumes: - "../app:/var/www/app" #      nginx - "./conf/nginx:/etc/nginx/sites-available" #     db: image: mysql:latest #        networks: - default #    ports: - "3336:3306" #      environment: #    MYSQL_ROOT_PASSWORD: root #     MYSQL_DATABASE: yii-template-db #       volumes: - "./database:/var/lib/mysql" 

Erstellen Sie für nginx den Ordner docker / conf / nginx und die darin enthaltene Datei site.conf . Die Datei kann sich ändern, je nachdem, wie Sie nginx in Ihrem Projekt konfigurieren möchten. Es kann lokal geändert werden, weil Es verbindet sich durch Lautstärke. Wir dürfen jedoch nicht vergessen, nginx im Container neu zu starten: nginx -s reload


 server { charset utf-8; client_max_body_size 128M; listen 80; ## listen for ipv4 root /var/www/app/frontend/web/; index index.php; access_log /var/www/app/log/frontend-access.log; error_log /var/www/app/log/frontend-error.log; location / { try_files $uri $uri/ /index.php$is_args$args; } # uncomment to avoid processing of calls to non-existing static files by Yii #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ { # try_files $uri =404; #} #error_page 404 /404.html; # deny accessing php files for the /assets directory location ~ ^/assets/.*\.php$ { deny all; } location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/var/run/php-fpm.sock; try_files $uri =404; } location ~* /\. { deny all; } } 

Alle Befehle werden aus dem Stammordner ausgeführt.


  • composer create-project --prefer-dist yiisoft/yii2-app-advanced app Befehl composer create-project --prefer-dist yiisoft/yii2-app-advanced app .
  • Führen Sie die docker-compose -f docker/docker-compose.yml up -d
  • Wir initialisieren die Projekt- app/init --env=Development --overwrite=All
  • Öffnen Sie die Datei app / common / config / main-local.php im Editor und füllen Sie sie mit Daten, um eine Verbindung zur Datenbank herzustellen . Im Beispiel haben wir das Root-Passwort als root, der DB-Host ist db, der Datenbankname ist yii-template-db.
  • docker exec -it docker_app_1 bash Verbindung zum docker exec -it docker_app_1 bash Container docker exec -it docker_app_1 bash
  • Führen Sie den Datenbankmigrationsbefehl php /var/www/app/yii migrate
  • Erstellen Sie einen Protokollordner mkdir /var/www/app/log
  • Und exit
  • Wir bremsen den Dienst docker-compose -f docker/docker-compose.yml down
  • Führen Sie es erneut aus. docker-compose -f docker/docker-compose.yml up -d
  • Öffnen Sie localhost in einem Browser und sehen Sie sich die neue Site an.

Upd: Es ist erwähnenswert, dass es immer ein offizielles Docker-Image von Yii2 gibt .

Source: https://habr.com/ru/post/de428688/


All Articles