Laradock注意事项
Laradock遇到的坑
修改php版本在`.env`中 PHP_VERSION=7.3
修改mysql版本`.env`中MYSQL_VERSION=5.7
1:镜像资源下载慢
在 env 文件中设置:
docker 本身的 Registry Mirrors 可以设置为 http://hub-mirror.c.163.com 加速镜像的下载,或者去注册个阿里云开发者账号登录后可以享用免费的阿里云镜像加速服务。
"registry-mirrors": ["https://xxx.mirror.aliyuncs.com"],
CHANGE_SOURCE=true
UBUNTU_SOURCE=aliyun
最好设置一下时区
WORKSPACE_TIMEZONE=PRC
2: 构建workspace速度慢
1、在 env 文件中设置:
CHANGE_SOURCE=true
UBUNTU_SOURCE=aliyun
注:UBUNTU_SOURCE 支持多种选择,具体情况请查看 workspace/sources.sh 文件
2、打开laradock目录下的workspace下的Dockerfile
在该处添加中科大的源也就是国内加速
find /etc/apt/sources.list.d/ -type f -name "ondrej-ubuntu-php-xenial.list" -exec sed -i.bak -r 's#deb(-src)?\s*http(s)?://ppa.launchpad.net#deb\1 https\2://launchpad.proxy.ustclug.org#ig' {} \; && \
3:构建workspace时,报错提示/tmp/sources.sh: not found
git bash 中 切换到 laradock 目录
vi ./workspace/sources.sh
:set ff=unix
:wq
4:构建 workspace 时 node 安装失败
https://githubusercontent.com.ipaddress.com/raw.githubusercontent.com
访问上面的链接,得到的ip地址写入host即可解决
5:laradock mysql问题
1、ERROR: for mysql Cannot start service mysql: Ports are not available: listen tcp 0.0.0.0:3306: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
解决方法:
在.env
中换一个端口
- MYSQL_PORT=3306
+ MYSQL_PORT=3307
2、2021-01-13T05:44:31.496781Z 0 [ERROR] [FATAL] InnoDB: Table flags are 0 in the data dictionary but the flags in file ./ibdata1 are 0x4800!
解决方法:
出现的原因是 一开始我是用了 5.8 ,然后数据目录存了一些数据,我换成5,7的时候 没有把数据删掉,再重新启动的时候,数据目录还是指向原来的数据,版本的数据格式不一样, 清空 数据目录的数据,便可以启动了。(C:\Users\user.laradock\data)
6:laradock php-fpm问题
修改为false
CHANGE_SOURCE=false
运行
docker-compose build --no-cache --pull php-fpm
修改代码必须重启
-
使用 Laradock 作为本地开发环境,修改了 Laravel 代码之后必须重启 Docker 才能使代码生效
-
修改docker-compose.yml必须重启 Docker 才能生效
docker-compose stop
docker-compose up -d nginx mysql
- 修改laradock mysql端口
在docker-compose.yml文件
command+ f 搜索mysql
### MySQL ################################################
mysql:
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" #修改这一行,我将其注释掉了
- "3308:3306" #改成不冲突的端口 第一个是本地端口 第二个是容器中的端口
networks:
- backend
laradock 如何添加 redis 配置
修改 Dockerfile
编辑 redis/Dockerfile 如下
FROM redis:latest
LABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>"
## For security settings uncomment, make the dir, copy conf, and also start with the conf, to use it
RUN mkdir -p /usr/local/etc/redis
COPY redis.conf /usr/local/etc/redis/redis.conf
VOLUME /data
EXPOSE 6379
CMD ["redis-server", "/usr/local/etc/redis/redis.conf"]
#CMD ["redis-server"]
编辑配置文件*
默认情况 redis 目录下有 redis.conf 文件,修改以下两点即可
注释 bind 127.0.0.1
protected-mode 改为 no
requirepass 设置密码
其他配置根据自己情况进行修改。
切换到 laradock 目录 重装 redis
停止 redis docker-compose stop redis
重装 docker-compose build --no-cache redis
启动 docker-compose up -d redis
正常情况就启动成功了。
几个常用命令
php -m //
php -i |grep php.ini //查看php.ini位置
php --ri swoole //读取swoole信息
redis-cli //用于启动redis客户端