Configurar el entorno de trabajo en Docker para la aplicación yii-framework

Para elevar rápidamente el ambiente de trabajo, hay muchas maneras. Una de ellas es aumentar todos los servicios necesarios en los contenedores Docker. Para acelerar la creación de nuevos proyectos en el marco Yii, escribí una instrucción tan pequeña que utilizan los desarrolladores de nuestro equipo.


Al principio, debe tener docker, docker-compose, php y php-composer.
Creamos la carpeta con el proyecto y la carpeta acoplable en él.


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

En la carpeta docker , cree el archivo de configuración para nuestro contenedor 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 

En la misma carpeta docker , cree docker-compose.yml para elevar el entorno de desarrollo.


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

Para nginx, cree la carpeta docker / conf / nginx y el archivo site.conf en ella. El archivo puede cambiar, dependiendo de cómo desee configurar nginx en su proyecto. Se puede cambiar localmente, porque Se conecta a través del volumen. Pero no debemos olvidar reiniciar nginx dentro del contenedor: 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; } } 

Todos los comandos se ejecutan desde la carpeta raíz.


  • composer create-project --prefer-dist yiisoft/yii2-app-advanced app comando de creación de composer create-project --prefer-dist yiisoft/yii2-app-advanced app .
  • Ejecute el docker-compose -f docker/docker-compose.yml up -d
  • Inicializamos la app/init --env=Development --overwrite=All del proyecto app/init --env=Development --overwrite=All
  • Abra el archivo app / common / config / main-local.php en el editor y complételo con datos para conectarse a la base de datos. En el ejemplo, tenemos la contraseña de root como root, el host de DB es db, el nombre de la base de datos es yii-template-db.
  • Conectando al contenedor docker exec -it docker_app_1 bash
  • Ejecute el comando de migración de base de datos php /var/www/app/yii migrate
  • Cree una carpeta de registro mkdir /var/www/app/log
  • Y exit
  • docker-compose -f docker/docker-compose.yml down servicio docker-compose -f docker/docker-compose.yml down
  • Ejecútelo de nuevo docker-compose -f docker/docker-compose.yml up -d
  • Abra localhost en un navegador y mire el nuevo sitio.

Upd: Vale la pena mencionar que siempre hay una imagen oficial de Docker de Yii2 .

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


All Articles