Mac M1安装laradock(可能现在版本已跟不上)

安装配置

github地址:github.com/laradock/laradock

文档、官网地址:laradock.io/

  1. 克隆代码

    git clone https://github.com/Laradock/laradock.git
  2. 复制配置文件

    cp .env.example .env
  3. 因为是M1系统,所以需要在docker-compose.yml中的mysql部分进行修改

    mysql:
          image: mysql:8.0.19
          platform: 'linux/x86_64'
          build:
            context: ./mysql
            args:
              - MYSQL_VERSION=${MYSQL_VERSION}
          environment:
            - MYSQL_DATABASE=${MYSQL_DATABASE}
            - MYSQL_USER=${MYSQL_USER}
            - MYSQL_PASSWORD=${MYSQL_PASSWORD}
            - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
            - TZ=${WORKSPACE_TIMEZONE}
          volumes:
            - ${DATA_PATH_HOST}/mysql:/var/lib/mysql
            - ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
          ports:
            - "${MYSQL_PORT}:3306"
          networks:
            - backend
          user: mysql
  4. 后面还可能因为网络问题,导致Service php-fpm build failed,修改docker-compose.yml

    WORKSPACE_TIMEZONE=UTC  # 换成 PRC

    如果没有很好的访问国外raw.github.com类似的网址的,建议去hosts文件添加,如果有,那就另当别论。

  5. 启动容器 ,根据自己需要的镜像来启动

    docker-compose up -d redis mysql nginx workspace

    进行等待漫长的下载过程即可。

如果最后都有一个绿色的done显示,并且没有error,再使用docker ps查看运行的容器是否运行成功。

因为我们使用这个,仅仅需要一个workspace,所以我们需要进入workspace的控制台。

docker-compose up exec workspace bash

克隆一个laravel代码,默认克隆下来是最新的版本,我们需要切换到我们支持的版本上去。

文件映射关系

我这里目录放的有点草率了,导致当前上一级目录都被映射到容器内部去了,浪费了。所以你们需要找一个当前laradock目录上一级是个除了laradock以外没啥东西的地方去弄比较合适。

Laravel配置

我们需要配置composer使用阿里云镜像

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

复制一份环境配置文件

cp .env.example .env

安装Laravel需要的依赖

composer install -vvv

等待下载安装完成即可。

还需要对.envkey进行配置,因为我们是直接拉取的一个代码,而不是使用Laravel的命令或者composer安装的

cd laravel
php artisan key:generate

配置完成之后,我们最终还是需要在网页进行访问的,所以还需要配置nginx

到我们的laradock目录下的nginx下的sites目录里有一个laravel.conf.example文件,我们进行复制一份,去除后面的.example即可。

注意:

此时我们的nginx配置文件中的案例,是指向的是对的,

#server {
#    listen 80;
#    server_name laravel.com.co;
#    return 301 https://laravel.com.co$request_uri;
#}

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;
    }

    location ~ /\.ht {
        deny all;
    }

    location /.well-known/acme-challenge/ {
        root /var/www/letsencrypt/;
        log_not_found off;
    }

    error_log /var/log/nginx/laravel_error.log;
    access_log /var/log/nginx/laravel_access.log;
}

要想使得nginx生效,我们还得重新启动一下nginx

重启nginx的几种方式

# 进入到laradock目录
docker-compose exec nginx bash

# 或者使用docker ps 查看容器的id
docker-compose exec 容器id bash

# 或者直接在任意目录下使用docker重启
docker restart 容器id

配置虚拟域名

如上所述,我们配置了http://laravel.test的虚拟域名

我们在Mac中有一个软件:SwitchHosts可以轻松做到。Windows下你们可以自己去找到hosts文件进行修改即可。

hosts

配置完成之后,我们尝试ping通一下

ping laravel.test

ping

我们在浏览器上访问是否可以

访问通过

本作品采用《CC 协议》,转载必须注明作者和本文链接
Virus
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4

执行 docker-compose up nginx 报错了:

#139 0.212 curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused
2年前 评论
wxvirus (楼主) 2年前

file我是mac M2 请问这个怎么解决啊?

1年前 评论
loudefa 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!