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客戶端
