Configuration de l'environnement de travail dans Docker pour l'application yii-framework

Afin d'élever rapidement l'environnement de travail, il existe de nombreuses façons. L'un d'eux est de lever tous les services nécessaires dans des conteneurs Docker. Pour accélérer la création de nouveaux projets sur le framework Yii, j'ai écrit une si petite instruction que les développeurs de notre équipe utilisent.


Au début, vous devriez avoir docker, docker-compose, php et php-composer.
Nous créons le dossier avec le projet et le dossier docker dedans.


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

Dans le dossier docker , créez le fichier de configuration pour notre conteneur Dockerfile .


 #    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 

Dans le même dossier docker , créez docker-compose.yml pour augmenter l'environnement de développement.


 #   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" 

Pour nginx, créez le dossier docker / conf / nginx et le fichier site.conf qu'il contient . Le fichier peut changer, selon la façon dont vous souhaitez configurer nginx sur votre projet. Il peut être modifié localement, car Il se connecte via le volume. Mais il ne faut pas oublier de redémarrer nginx à l'intérieur du conteneur: 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; } } 

Toutes les commandes sont exécutées à partir du dossier racine.


  • composer create-project --prefer-dist yiisoft/yii2-app-advanced app commande de création de composer create-project --prefer-dist yiisoft/yii2-app-advanced app .
  • Exécutez l' docker-compose -f docker/docker-compose.yml up -d
  • Nous initialisons le projet app/init --env=Development --overwrite=All
  • Ouvrez le fichier app / common / config / main-local.php dans l'éditeur et remplissez-le de données pour vous connecter à la base de données. Dans l'exemple, nous avons le mot de passe root en tant que root, l'hôte DB est db, le nom de la base de données est yii-template-db.
  • Connexion au conteneur docker exec -it docker_app_1 bash
  • Exécutez la commande de migration de base de données php /var/www/app/yii migrate
  • Créer un dossier de journaux mkdir /var/www/app/log
  • Et exit
  • Nous freinons le service docker-compose -f docker/docker-compose.yml down
  • Réexécutez docker-compose -f docker/docker-compose.yml up -d
  • Ouvrez localhost dans un navigateur et regardez le nouveau site.

Mise à jour: il convient de mentionner qu'il existe toujours une image Docker officielle de Yii2 .

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


All Articles