laradock安装

docker 文档
laradock 中文文档

Laradock注意事项

安装依赖#

git#

Copy Highlighter-hljs
yum install -y git

docker#

  • 安装依赖包
Copy Highlighter-hljs
yum install -y yum-utils device-mapper-persistent-data lvm2
  • 设置stable镜像仓库
Copy Highlighter-hljs
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 或 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 更新yum软件包索引
Copy Highlighter-hljs
yum makecache fast

如果这是自添加 Docker 镜像仓库以来您首次刷新软件包索引,系统将提示您接受 GPG 密钥,并且将显示此密钥的指纹。验证指纹是否正确,并且在正确的情况下接受此密钥。指纹应匹配 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35。

  • 安装docker

1.下载最新docker社区版,安装指定版本:

Copy Highlighter-hljs
yum list docker-ce.x86_64 --showduplicates | sort -r #从高到低列出Docker-ce的版本

2.安装最新版本:

Copy Highlighter-hljs
yum -y install docker-ce

自启动docker

Copy Highlighter-hljs
systemctl start docker

测试docker

Copy Highlighter-hljs
docker version

安装docker-compose#

  • 安装:
Copy Highlighter-hljs
curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose # 等效上面的命令 chmod +x /usr/local/bin/docker-compose

备注:linux环境uname命令可显示电脑和操作系统相关信息。uname -s显示操作系统名称;uname -m显示电脑类型。

  • 查看版本:
Copy Highlighter-hljs
docker-compose --version
  • docker-compose常用命令
Copy Highlighter-hljs
docker-compose -h # 查看帮助 docker-compose up # 创建并运行所有容器 docker-compose up -d # 创建并后台运行所有容器 docker-compose -f docker-compose.yml up -d # 指定模板 docker-compose down # 停止并删除容器、网络、卷、镜像。 docker-compose logs # 查看容器输出日志 docker-compose pull # 拉取依赖镜像 dokcer-compose config # 检查配置 dokcer-compose config -q # 检查配置,有问题才有输出 docker-compose restart # 重启服务 docker-compose start # 启动服务 docker-compose stop # 停止服务

安装laradock#

  • 在项目同级目录下安装
Copy Highlighter-hljs
git clone https://github.com/LaraDock/laradock.git
  • 启动 LaraDock

进入 laradock 目录将 env-example 重命名为 .env

Copy Highlighter-hljs
cd laradock cp env-example .env

运行容器

Copy Highlighter-hljs
docker-compose up -d nginx mysql redis

由于Laradock中的软件源并没有为国内做优化,都是默认在国外的。所以构造速度视网络情况,如果比较慢可以只构建基本的nginx和mysql,它们会自动构建php-fpm 和 workspace这两个两个容器,后续需要什么服务等要用到时候再去构建。如果特别的慢可以去找下Laradock国内修改版的。

默认情况下,创建的容器具有当前目录名称作为后缀(例如laradock_workspace_1)

注:所有Web服务器容器nginx,apache..依赖于php-fpm,这意味着如果您运行其中任何一个,它们将自动php-fpm为您启动容器,因此无需在 up 命令中明确指定它。

  • Nginx 配置
    laradock/nginx/sites 下新建 blog.conf 文件
Copy Highlighter-hljs
server { listen 80 ; listen [::]:80 ; # For https # listen 443 ssl default_server; # listen [::]:443 ssl default_server 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; } location ~ /\.ht { deny all; } location /.well-known/acme-challenge/ { root /var/www/letsencrypt/; log_not_found off; } }

重启 Nginx

配置一下域名信息

Copy Highlighter-hljs
C:\Windows\System32\drivers\etc\hosts

部署项目#

编辑 laradock 目录下的 .env 文件,制定项目代码目录

Copy Highlighter-hljs
APP_CODE_PATH_HOST=../wwwroot/

这样本地下的 ../wwwroot目录 就和 容器中的 /var/www 目录形成映射。

进入到工作区 workspace

Copy Highlighter-hljs
docker-compose exec workspace bash cd /var/www/

安装 laravel 项目

Copy Highlighter-hljs
配置和查看composer镜像 使用 composer config -l -g 查看所有全局配置 composer config -l -g //默认配置 composer config -g repo.packagist composer https://packagist.org //切换国内源 composer config -g repo.packagist composer https://packagist.phpcomposer.com composer create-project --prefer-dist laravel/laravel blog

管理mysql#

默认情况下 laradock 安装的 MySQL 版本为 latest ,也就是8.0。但是 8.0 在 Mac 下 使用 Sequel Pro 连接会出现一点问题、导致连接不上,所以切到5.7 的版本

编辑 laradock 下 .env 文件

Copy Highlighter-hljs
MYSQL_VERSION=5.7 MYSQL_DATABASE=default MYSQL_USER=default MYSQL_PASSWORD=secret MYSQL_PORT=3306 MYSQL_ROOT_PASSWORD=root

修改 MYSQL_VERSION 为 5.7

接着重新 build MySQL

Copy Highlighter-hljs
docker-compose build --no-cache mysql

运行MySQL

进入容器管理mysql

Copy Highlighter-hljs
//启动容器的mysql docker-compose up -d mysql //查看正在运行的容器 docker ps

进入容器
运行 docker-compose exec mysql bash 进入 mysql 容器,运行
mysql -uroot -p输入密码进入mysql
账号密码是laradock框架下的.env文件里面的

laravel 中使用 MySQL#

在 laravel 中使用 MySQL 需要指定 DB_HOST 为 mysql

Copy Highlighter-hljs
DB_CONNECTION=mysql DB_HOST=mysql

在 workspace 容器中执行 php artisan

Copy Highlighter-hljs
docker-compose exec workspace bash cd /var/www/wwwroot/blog php artisan migrate

由于多个 Docker 容器间的关系类似于依赖网络进行连接的主机,要想通过 PHP 容器中的脚本访问 MySQL 容器的数据库服务,需要具有远程连接的数据库用户,执行以下命令进行创建:

Copy Highlighter-hljs
GRANT ALL PRIVILEGES ON *.* TO username@'%' IDENTIFIED BY 'password';

注意以下几点:

. 表示对所有数据库的所有表都具有权限;

% 表示不限制连接的主机 IP,为了安全起见,这里可以把 % 改为 php。注意,这里的 php 其实相当于一个域名,Docker 的内置 DNS 会将其解析为 PHP 容器的地址;

修改 username 和 password 为自定义的用户名和密码。

  • 远程连接
    若想要在本地(非 Docker 宿主机)连接到数据库容器,需要利用端口映射,将数据库 Docker 的 3306 端口映射到主机的某个端口(如:12345),然后在本地通过访问服务器的 $server_ip:12345 并附带具有远程访问权限的用户名和密码进行远程连接(注意 % 的问题)。

在本文所用的 docker-compose.yml 中已经默认打开了 3306:3306 的端口映射,大家可以根据需要进行设置。

laradock 常用命令#

Copy Highlighter-hljs
停止所有容器运行 docker-compose stop 停止单个容器运行 docker-compose stop {container name} 删除所有容器 docker-compose down 删除指定容器 docker-compose down {container name} 后台启动容器(本地没有镜像则会先pull) docker-compose up -d {container name} 进入容器 docker-compose exec {container name} bash 查看正在运行的容器 docker-compose ps 查看历史所有的容 器 docker-compose ps -a 查看日志文件 docker logs {container name} 重建所有容器 docker-compose build 重建某个容器 docker-compose build {container name} docker-compose.yml中重建docker容器 docker-compose up -d --force-recreate --build {container name} 退出容器 exit 在修改 docker-compose.yml 配置后,重启相关(非全部)容器,以使配置生效 docker-compose up --detach --build "<service name>"

安装nodejs+npm+bower#

1.下载并解压

Copy Highlighter-hljs
下载 wget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.xz 解压: tar -xvf node-v10.15.3-linux-x64.tar.xz 进入解压目录的bin中,检查是否可以安装成功 ./node -v 配置软连接,使全局都可以使用node命令 mv node-v10.15.3-linux-x64 node // 修改解压包名称 ln -s /usr/local/node/bin/node /usr/bin/node --将node源文件映射到usr/bin下的node文件 ln -s /usr/local/node/bin/npm /usr/bin/npm

laradock采坑#

laradock 启动时 nvm 报错 raw.githubusercontent.com#

报错:curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused /bin/sh: 1: .: Can't open /home/laradock/.nvm/nvm.sh

从格林威治 改为 中国

Copy Highlighter-hljs
WORKSPACE_TIMEZONE=PRC

第一种就是之前各位说的修改 hosts 文件;#

Ping 一下这个地址 raw.githubusercontent.com 是否能 Ping 得通

ping 不通后 在 https://www.ipaddress.com/ 查询 raw.githubusercontent.com 的真实 IP, 然后手工添加到 /etc/hosts, 比如 199.232.28.133 raw.githubusercontent.com
修改本地 host 文件

在Linux下修改/etc/hosts,若想要它立刻生效,运行source /etc/hosts应该就可以了

  • 测试端口是否ping的方法
Copy Highlighter-hljs
第一种: telnet ip port 说明: ip:是测试主机的ip地址 port:是端口,比如80 第二种: curl ip:port 说明: ip:是测试主机的ip地址 port:是端口,比如80 如果远程主机开通了相应的端口,都会输出信息,如果没有开通相应的端口,则没有任何提示,需要CTRL+C断开。

第二种如下:#

如果你实在想用node,可以尝试以下方法是否可以解决

Copy Highlighter-hljs
NVM 慢的问题 在 env 文件中设置 WORKSPACE_NVM_NODEJS_ORG_MIRROR = https://npm.taobao.org/mirrors/node CHANGE_SOURCE=true UBUNTU_SOURCE=aliyun WORKSPACE_TIMEZONE=PRC

如果用不上node的话,就去.env配置文件里把node,yarn,npm等与node相关的下载配置改为false。

Copy Highlighter-hljs
WORKSPACE_NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node WORKSPACE_INSTALL_NODE=false WORKSPACE_NODE_VERSION=node WORKSPACE_NPM_REGISTRY= WORKSPACE_INSTALL_PNPM=false WORKSPACE_INSTALL_YARN=false WORKSPACE_YARN_VERSION=latest WORKSPACE_INSTALL_NPM_GULP=false WORKSPACE_INSTALL_NPM_BOWER=false WORKSPACE_INSTALL_NPM_VUE_CLI=false WORKSPACE_INSTALL_NPM_ANGULAR_CLI=false

php扩展 有些也是因为网络问题,无法下载,请把配置改为false

使用laradock时,mysql问题#

laradock 默认使用 mysql 8.0 以上的版本,可能会导致各种各样的问题出现。
所以, 不想过多折腾的话,建议使用 mysql 5.7 即可。

docker安装mysql [ERROR] [FATAL] InnoDB: Table flags are 0 in the data dictionary but the flags in file ./ibdata1 are 0x4800!

出现的原因是 一开始我是用了latest ,然后数据目录存了一些数据,我换成5,7的时候 没有把数据删掉,再重新启动的时候,数据目录还是指向原来的数据,版本的数据格式不一样, 清空 数据目录的数据,便可以启动了
修改.env 为5.7

Copy Highlighter-hljs
MYSQL_VERSION=5.7 MYSQL_DATABASE=default MYSQL_USER=default MYSQL_PASSWORD=root MYSQL_PORT=3306 MYSQL_ROOT_PASSWORD=root MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d
Copy Highlighter-hljs
然后完整的删除 ~/.laradock/data/mysql /root/.laradock/data/mysql 删除完,运行 docker-compose build --no-cache mysql 重启mysql容器 docker-compose restart mysql 运行 docker-compose exec mysql bash 进入 mysql 容器,运行 mysql -uroot -proot

关于 composer 下载时出现 [InvalidArgumentException] Could not find package 问题#

镜像地址问题。从而导致无法找到框架包,laravel也是一样提示。

Copy Highlighter-hljs
# 解决方案,切换 composer 镜像地址 # 阿里云镜像 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

将nginx.config的user改为和启动用户一致 并修改laravel的相关权限#

Copy Highlighter-hljs
vim laradock/nginx/sites/blog.conf user root; 修改laravel的相关权限 chmod -R 777 storage/*

Laradock 镜像替换#

因为默认用的是国外 Debian 镜像源,故在执行 apt-get 等命令拉取软件包时会失败,我们需手动在对应的 Dockerfile 中添加一个 RUN 指令来替换掉默认的镜像源

需根据自己当前 Laradock 版本查看引用的系统镜像及其版本注意不同,其他系统(eg: CentOS)请对症下药。

posted @   caibaotimes  阅读(452)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示
CONTENTS