laradock安装
安装依赖#
git#
yum install -y git
docker#
- 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
- 设置stable镜像仓库
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软件包索引
yum makecache fast
如果这是自添加 Docker 镜像仓库以来您首次刷新软件包索引,系统将提示您接受 GPG 密钥,并且将显示此密钥的指纹。验证指纹是否正确,并且在正确的情况下接受此密钥。指纹应匹配 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35。
- 安装docker
1.下载最新docker社区版,安装指定版本:
yum list docker-ce.x86_64 --showduplicates | sort -r #从高到低列出Docker-ce的版本
2.安装最新版本:
yum -y install docker-ce
自启动docker
systemctl start docker
测试docker
docker version
安装docker-compose#
- 安装:
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显示电脑类型。
- 查看版本:
docker-compose --version
- docker-compose常用命令
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#
- 在项目同级目录下安装
git clone https://github.com/LaraDock/laradock.git
- 启动 LaraDock
进入 laradock
目录将 env-example
重命名为 .env
cd laradock
cp env-example .env
运行容器
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
文件
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
配置一下域名信息
C:\Windows\System32\drivers\etc\hosts
部署项目#
编辑 laradock
目录下的 .env
文件,制定项目代码目录
APP_CODE_PATH_HOST=../wwwroot/
这样本地下的 ../wwwroot
目录 就和 容器中的 /var/www
目录形成映射。
进入到工作区 workspace
docker-compose exec workspace bash
cd /var/www/
安装 laravel 项目
配置和查看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 文件
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
docker-compose build --no-cache mysql
运行MySQL
进入容器管理mysql
//启动容器的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
DB_CONNECTION=mysql
DB_HOST=mysql
在 workspace 容器中执行 php artisan
docker-compose exec workspace bash
cd /var/www/wwwroot/blog
php artisan migrate
由于多个 Docker 容器间的关系类似于依赖网络进行连接的主机,要想通过 PHP 容器中的脚本访问 MySQL 容器的数据库服务,需要具有远程连接的数据库用户,执行以下命令进行创建:
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 常用命令#
停止所有容器运行
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.下载并解压
下载
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
从格林威治 改为 中国
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的方法
第一种:
telnet ip port
说明:
ip:是测试主机的ip地址
port:是端口,比如80
第二种:
curl ip:port
说明:
ip:是测试主机的ip地址
port:是端口,比如80
如果远程主机开通了相应的端口,都会输出信息,如果没有开通相应的端口,则没有任何提示,需要CTRL+C断开。
第二种如下:#
如果你实在想用node,可以尝试以下方法是否可以解决
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。
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
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
然后完整的删除 ~/.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也是一样提示。
# 解决方案,切换 composer 镜像地址
# 阿里云镜像
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
将nginx.config的user改为和启动用户一致 并修改laravel的相关权限#
vim laradock/nginx/sites/blog.conf
user root;
修改laravel的相关权限
chmod -R 777 storage/*
Laradock 镜像替换#
因为默认用的是国外 Debian 镜像源,故在执行 apt-get 等命令拉取软件包时会失败,我们需手动在对应的 Dockerfile 中添加一个 RUN 指令来替换掉默认的镜像源
需根据自己当前 Laradock 版本查看引用的系统镜像及其版本注意不同,其他系统(eg: CentOS)请对症下药。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?