在Docker中为yii-framework应用程序设置工作环境

为了快速提高工作环境,有很多方法。 其中之一是在Docker容器中引发所有必要的服务。 为了加快在Yii框架上创建新项目的速度,我写了一条很小的说明,供团队中的开发人员使用。


首先,您应该拥有docker,docker-compose,php和php-composer。
我们创建包含项目和docker文件夹的文件夹。


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

docker文件夹中,为我们的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 

在相同的docker文件夹中,创建docker-compose.yml以引发开发环境。


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

对于nginx,在其中创建docker / conf / nginx文件夹及其site.conf文件。 该文件可能会更改,具体取决于您要如何在项目上配置nginx。 可以在本地更改,因为 它通过音量连接。 但是我们一定不要忘记在容器内重新启动Nginx: 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; } } 

所有命令均从根文件夹执行。


  • composer create-project --prefer-dist yiisoft/yii2-app-advanced app创建命令composer create-project --prefer-dist yiisoft/yii2-app-advanced app
  • docker-compose -f docker/docker-compose.yml up -d运行docker-compose -f docker/docker-compose.yml up -d
  • 我们初始化项目app/init --env=Development --overwrite=All
  • 在编辑器中打开文件app / common / config / main-local.php,在其中填充数据以连接到数据库。 在该示例中,我们以root密码为root,数据库主机为db,数据库名称为yii-template-db。
  • 连接到docker exec -it docker_app_1 bash容器docker exec -it docker_app_1 bash
  • 运行数据库迁移命令php /var/www/app/yii migrate migration
  • 创建一个日志文件夹mkdir /var/www/app/log
  • 然后exit
  • 我们docker-compose -f docker/docker-compose.yml down服务docker-compose -f docker/docker-compose.yml down
  • 再次运行docker-compose -f docker/docker-compose.yml up -d
  • 在浏览器中打开localhost并查看新站点。

Upd:值得一提的是,始终有Yii2官方Docker镜像

Source: https://habr.com/ru/post/zh-CN428688/


All Articles