Docker 高效搭建本地开发环境教程分享 2

电子说

1.3w人已加入

描述

配置env文件

  1. 拷贝example成.env
    cp env-example env
    
  2. .env文件中APP_CODE_PATH_HOST是本地路径 APP_CODE_PATH_CONTAINER是远程映射路径,看需求修改,大多数情况下是不需要的
  3. 如果有调试代码的需求,也可以将PHP_FPM_INSTALL_XDEBUGWORKSPACE_INSTALL_XDEBUG两个选项打开
  4. 如果还有其他的需求,可以在.env里面搜索,里面已经将大多数配置项都给独立出来了

运行容器

进入到laradock的工作目录下面,就是clone的项目的根目录我的工作目录就是~/Docker/laradock

然后运行如下命令

docker-compose up -d nginx mysql

就会看到在自动执行build操作,并且build完了之后自动后台启动了如下容器

  • nginx
  • php-fpm
  • workspace
  • mysql

那是因为php-fpmworkspace还有docker-in-docker是随nginx一并启动的

所以实际上

docker-compose up -d nginx mysql

docker-compose up -d nginx workspace php-fpm mysql

这两条命令的效果是一样的,可以都带上,也可以不写。

up命令在第一次启动的时候实际上就是build + start的组合,如果容器不存在,那么就build一个容器,并且启动服务,如果容器存在那么直接启动服务,大概就是这么个意思 -d的意思是后台运行

配置web项目

一下是我laravel项目的部分配置

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=root
DB_PASSWORD=root
......

注意,数据库主机必须得是别名才可以,如果DB_CONNECTION这个地方输入172.0.0.1或者是localhost都是会连接失败的。

在其它的项目中也必须是这样的,配置数据库链接,redis,或者MemCache链接都必须设置成具体的别名。或者你说我找到各个容器的ip,可以嘛。可以,但是并不建议这样做,因为ip是会变动的。

具体别名可以参考./docker-compose.yml文件中的设置

这个主要的技术实现应该是用了docker的虚拟网桥技术.

配置宿主机的host

因为,往往我们访问的时候,是通过宿主机上面的浏览器发送请求的,所以,配置宿主机上面的host必不可少。

vim /etc/hosts

我这里加入一条我自己设置的虚拟域名

127.0.0.1       blog.test

然后保存,刷新下host。

配置nginx

进入到./laradock/nginx/sites文件夹,然后ll一下,我们会发现,laradock已经帮我们放了好多列举的文件进来

app.conf.example default.conf laravel.conf.example symfony.conf.example

根据需求拷贝一份,然后修改一下就可以了,都不是很难,由于我们本地是laravel开发的博客项目,所以我就直接拷贝laravel.conf.example,然后使用vim打开

cp laravel.conf.example blog.conf vim blog.conf

打开后的内容...

server {

    listen 80;
    listen [::]:80;

    # For https
    # listen 443 ssl;
    # listen [::]:443 ssl ipv6only=on;
    # ssl_certificate /etc/nginx/ssl/default.crt;
    # ssl_certificate_key /etc/nginx/ssl/default.key;

    server_name laravel.test;
    root /var/www/laravel/public;
    index index.php index.html index.htm;

    location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \\.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass php-upstream;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #fixes timeouts
        fastcgi_read_timeout 600;
        include fastcgi_params;

我们会发现,如果没有特殊需求的话,这个里面大多数地方我们并不需要修改。我们只需要关注server_nameroot这两个参数,把这个里面的laravel换成我们项目名就可以了,这里我们换成blog

下面是修改后的内容

server {

    listen 80;
    listen [::]:80;

    # For https
    # listen 443 ssl;
    # listen [::]:443 ssl ipv6only=on;
    # ssl_certificate /etc/nginx/ssl/default.crt;
    # ssl_certificate_key /etc/nginx/ssl/default.key;

    server_name blog.test;
    root /var/www/blog/public;
    index index.php index.html index.htm;

    location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \\.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass php-upstream;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #fixes timeouts
        fastcgi_read_timeout 600;
        include fastcgi_params;

访问

输入url

http://blog.test/

浏览器返回结果

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分