Configurando o ambiente de trabalho no Docker para o aplicativo yii-framework

Para aumentar rapidamente o ambiente de trabalho, existem várias maneiras. Uma delas é elevar todos os serviços necessários em contêineres do Docker. Para acelerar a criação de novos projetos na estrutura Yii, escrevi uma instrução tão pequena que os desenvolvedores de nossa equipe usam.


No início, você deve ter docker, docker-compose, php e php-compositer.
Criamos a pasta com o projeto e a pasta docker .


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

Na pasta docker , crie o arquivo de configuração para o contêiner 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 

Na mesma pasta docker , crie docker-compose.yml para aumentar o ambiente de desenvolvimento.


 #   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 o nginx, crie a pasta docker / conf / nginx e o arquivo site.conf . O arquivo pode mudar, dependendo de como você deseja configurar o nginx no seu projeto. Pode ser alterado localmente, porque Ele se conecta através do volume. Mas não devemos esquecer de reiniciar o nginx dentro do contêiner: 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 os comandos são executados a partir da pasta raiz.


  • composer create-project --prefer-dist yiisoft/yii2-app-advanced app comando de criação de composer create-project --prefer-dist yiisoft/yii2-app-advanced app .
  • Execute o ambiente docker-compose -f docker/docker-compose.yml up -d
  • Inicializamos o projeto app/init --env=Development --overwrite=All
  • Abra o arquivo app / common / config / main-local.php no editor e preencha-o com dados para conectar-se ao banco de dados. No exemplo, temos a senha raiz como raiz, o host do banco de dados é db, o nome do banco de dados é yii-template-db.
  • Conectando-se ao contêiner do docker exec -it docker_app_1 bash
  • Execute o comando de migração de banco de dados php /var/www/app/yii migrate
  • Crie uma pasta de log mkdir /var/www/app/log
  • E exit
  • Nós travamos o serviço docker-compose -f docker/docker-compose.yml down
  • Execute-o novamente docker-compose -f docker/docker-compose.yml up -d
  • Abra o host local em um navegador e veja o novo site.

Upd: vale ressaltar que sempre existe uma imagem oficial do Yii2 no Docker .

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


All Articles