系統環境介紹:
wsl2(Ubuntu18.04) + docker + laradock
建立專案資料夾並在該資料夾下下載laradock
$ mkdir laravel_test
$ cd laravel_test/
$ git clone https://github.com/laradock/laradock.git
目錄結構:
$ cd laradock/
$ cp env-example .env
# 這個變數通常預設就行,最後此時的專案目錄會對映到 workspace 容器的 `/var/www/` 目錄中
APP_CODE_PATH_HOST=../
# 像mysql等需要volume的資料會存放在宿主機中的位置,如果有需要可以修改一下
DATA_PATH_HOST=~/.laradock/data
# php版本(7.4 - 7.3 - 7.2 - 7.1 - 7.0 - 5.6)
PHP_VERSION=7.3
### MYSQL #################################################
# mysql版本,預設是lastest,根據需要修改
MYSQL_VERSION=5.7
# 預設資料庫名字
MYSQL_DATABASE=laravel
# 資料庫使用者名稱
MYSQL_USER=default
# 資料庫使用者密碼
MYSQL_PASSWORD=secret
# 資料庫埠
MYSQL_PORT=3306
# 資料庫root使用者的密碼
MYSQL_ROOT_PASSWORD=root
# 更換中國映象源,改為true
CHANGE_SOURCE=true
# 上面 `CHANGE_SOURCE` 改為`true`之後,就會更換為aliyun映象源
UBUNTU_SOURCE=aliyun
### WORKSPACE #############################################
# 將comoser更換為阿里映象源(更改為其他國內映象源也可以,否則速度不穩定)
WORKSPACE_COMPOSER_REPO_PACKAGIST=https://mirrors.aliyun.com/composer/
# 設定NVM安裝node的淘寶映象源
WORKSPACE_NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
# 設定node的淘寶的registry
WORKSPACE_NPM_REGISTRY=https://registry.npm.taobao.org/
# 時間改為PRC
WORKSPACE_TIMEZONE=PRC
如果不需要node,可以將以下配置改為false,上面的node淘寶映象源就不需要配置了
WORKSPACE_INSTALL_NODE=false
WORKSPACE_INSTALL_YARN=false
WORKSPACE_INSTALL_NPM_GULP=false
WORKSPACE_INSTALL_NPM_BOWER=false
WORKSPACE_INSTALL_NPM_VUE_CLI=false
WORKSPACE_INSTALL_NPM_ANGULAR_CLI=false
4.1、./laradock/workspace//Dockfile
的修改
想要安裝node,還需要以下配置,否則執行docker-compose會出錯
出錯截圖:
原因分析:
通過上述紅字並百度一堆各種對的或錯的解答之後,應該是node是通過nvm來安裝的,但是無法通過raw.githubusercontent.com/creation... 下載安裝nvm。通過瀏覽器輸入網址發現根本訪問不了。
通過檢視 ./laradock/workspace/Dockerfile
查詢網址關鍵字,定位如下圖:
解決方案:
網路上的方法通常就三個方案:
第一:通過查詢上述網址的ip地址,修改host,讓該網址對應ip,但是根本不管用
第二:就是手動下載sh檔案,並且修改Dockerfile的方法安裝nvm
第三:直接把.env檔案中的node全部false,不要node了
因為我自己想要儘可能完整的實現laradock的本該安裝的東西,所以採用第二種方法:
- 在github上下載對應版本
只需要下載install.sh
(install.sh一定要確保是unix編碼格式) 就可以了,為了方便下載到./laradock/workspace/
目錄中 - 修改
./laradock/workspace/Dockerfile
檔案,修改後如下圖- COPY ./install.sh /tmp/install.sh:將下載的install.sh複製進docker容器中
- /bin/sh -c /tmp/install.sh:執行install.sh
- 上兩步已經完成了 註釋掉的 curl
4.2、有概率會出現 /tmp/sources.sh: not found
出錯截圖:
原因分析:
sources.sh不是以unix格式編碼
參考:github.com/laradock/laradock/pull/...
解決方法:
- 如果是windows系統,用nodepad++等編輯器重新轉為Unix編碼即可
- 如果是Linux,進入 laradock 目錄,執行以下命令即可:
$ vi ./workspace/sources.sh $ :set ff=unix $ :wq
要在 ./laradock 目錄下 執行命令
預設會啟動 workspace、php-fpm 和 composer 等都會自動配置
$ docker-compose up -d nginx mysql
此時進入workspace容器後,會預設在
/var/www
專案目錄下
# 進入workspace容器
$ docker-compose exec workspace /bin/bash
# 在容器中執行composer命令將Laravel框架安裝在 ./laravel 目錄中
root@b0cf8f8333e4:/var/www# composer create-project --prefer-dist laravel/laravel laravel "6.*"
此時的目錄結構如下圖:
我自己習慣在瀏覽器中用localhost訪問,然後為了方便,就直接把 laravel.conf.example 修改為 default.conf 了
所以主要是註釋掉server_name
和修改專案站點目錄
:
$ docker-compose restart nginx
此時已經可以在瀏覽器中通過 localhost 訪問了,我是用wsl2環境搭建的,所以宿主機不支援127.0.0.1,只能通過localhost訪問
laradock的mysql容器不是以ip地址連線的,而是以mysql標籤名連線的
所以 ./laravel/.env 中關於DB_HOST的值不是ip地址,而是mysql這個單詞
引數修改為:
./laravel/.env
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=root
途徑一:通過 phpmyadmin
- workspace佔用著8080埠,所以需要修改
./laradock/.env
中的埠# 把phpmyadmin預設的8080改為不被佔用的埠 PMA_PORT=8081
- 啟動
phpmyadmin
$ docker-compose up -d phpmyadmin
- 瀏覽器網址:localhost:8081
途徑二:通過 amdiner
- 修改
./laradock/.env
中的埠# 把adminer預設的8080改為不被佔用的埠 ADM_PORT=8082
- 啟動
adminer
$ docker-compose up -d adminer
- 瀏覽器網址:localhost:8082
途徑三:通過宿主機資料庫管理工具管理:
資料庫連線工具:
我的環境是wsl2環境,ip地址就要改為localhost,暫時不支援127.0.0.1
如果不是這樣的環境,應該是
mysql
? 這個我自己沒有試驗過,還不確定,但是ip地址應該無外乎上面的幾個吧。
至此,基本的配置和安裝都結束了。
本作品採用《CC 協議》,轉載必須註明作者和本文連結