安装docker
从官网地址下载安装
安装Laradock
从git下载laradock
git clone https://github.com/LaraDock/laradock.git
注:最好把Laradock clone到项目同级目录
从env-example复制一份.env配置文件
cd laradock
cp env-example .env
vim .env
编辑一下env文件
APPLICATION=../code/
注: 这边的code是我的项目目录, 和Laradock同级
开始安装并启动nginx
docker-compose up -d nginx
安装npm
因为composer是自带的(别忘了设置一下国内镜像),所以不需要装,这里采用nvm安装nodejs
进入workspace容器
docker-compose exec —user=laradock workspace bash
安装nvm
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
- 常用命令:
nvm ls-remote
nvm install 版本号
- 以下安装node+npm是别的地方看到的 没有尝试过
1)打开docker-compose.yml
文件;
2)在Workspace容器中找到INSTALL_NODE
选项设置为true
;
workspace:
build:
context: ./workspace
args:
- INSTALL_NODE=true
...
3)最后重建容器:docker-compose build workspace
修改nginx配置
在laradock的nginx文件夹下的sites目录 下修改 default.conf
客户机上的code文件夹挂载到了/var/www
示例
code/stock -> /var/www/stock/public/
重启nginx
docker-compose restart nginx
(忘了是不是这个命令)
如果您对
docker-compose.yml
配置进行了更改,则运行此命令后这些更改不会反映出来。例如,对环境变量(在构建容器后但在容器的命令执行之前添加)的更改在重新启动后不会更新。
连接外部mysql
我之前用的phpstudy上的mysql, 懒得改了, 说一下怎么在容器里连接外部的msyql, 后面说一下如何用mysql容器
win+R -> cmd -> ipfoncig
找到一个
以太网适配器 vEthernet (DockerNAT):
连接特定的 DNS 后缀 . . . . . . . :
IPv4 地址 . . . . . . . . . . . . : 10.0.75.1
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . :
记下ip
在laravel项目的.env中修改
DB_CONNECTION=mysql
DB_HOST=10.0.75.1
之后会报错Access denied for user'root'@'
这边解决方法是打开 phpStudy > 服务管理器 > MySQL > 启动
。再打开 phpStudy > MySQL工具 > MySQL命令行
输入 mysql
密码执行
grant all privileges on *.* to 'root'@'%' identified by 'mysql密码' with grant option;
FLUSH PRIVILEGES;
exit;
然后就没问题了
连接容器mysql
首先最好修改一下mysql版本, 默认8.0的mysql会报SQLSTATE[HY000][2054] The server requested authentication method unknown to the client
的错误
github上有issuehttps://github.com/laradock/laradock/issues/1392
解决方法有2种 , 一种是继续用8.0 修改一下my.conf配置
另一种是降级到5.7版本
应该说是降级比较简单, 修改my.conf在issue上有详细说明, 这边不细说
更改
MYSQL_VERSION
为5.7
laradock / .envMYSQL_VERSION=5.7
docker-compose build --no-cache mysql
(这边我好像没法启动mysql容器,原因不明 暂时想到的方法是在一开始就修改版本, 我是安装了8.0之后再降级的)修改laravel的.env
DB_CONNECTION=mysql DB_HOST=mysql
不要填ip 不然会报错