ubuntu 18 – 使用 Docker 建立 php+Laravel+Nginx+MySQL+phpMyAdmin
安裝 Docker
sudo apt install docker-compose -y
Ubuntu 18
這篇記錄主要在 ubuntu 底下,使用 Laradock 快速建立 Laravel + Nginx + MySQL 。
安裝基本工具
sudo apt-get install curl -y sudo apt-get install vim -y
如果執行上述出現
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable) E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
那就執行以下這三段後再重新試試
sudo rm /var/lib/apt/lists/lock sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock*
安裝 Docker
curl -fsSL get.docker.com -o get-docker.sh rm get-docker.sh sudo apt install docker-compose -y
將自己的帳號加到 docker 這個群組,可避免之後運行 “docker-compose” 要打上 “sudo docker-compose…”
sudo usermod -aG docker 你的ubuntu帳號
若要生效似乎要重啟系統。
建立專案路徑
例如取名 laravel-test
mkdir ~/projects mkdir ~/projects/laravel-test
取得 Laradock
git clone https://github.com/Laradock/laradock.git cd laradock cp env-example .env vim .env
將 APP_CODE_PATH_HOST 指定我們的專案路徑,不可使用 ~/projects/laravel-test
APP_CODE_PATH_HOST=../projects/laravel-test
啟用需要的服務
sudo docker-compose up -d nginx mysql
進入 Workspace 容器
sudo docker-compose exec workspace bash
這時候容器內的 /var/www/ 就會對應到容器外的 ~/projects/laravel-test/,我們安裝 laravel
composer create-project laravel/laravel --prefer-dist .
更新 laravel 的 storage 寫入權限
chmod 777 -R storage
改資料庫設定
vim .env DB_HOST=mysql
打開瀏覽器輸入 http://localhost 就能看到 Laravel 啟用視窗了。若要修改 Laradock 當前的預設設定是
vim ~/laradock/nginx/sites/default.conf
(選用)建立站台
若要建立多個站台,可複製使用 laradock 已經提供的模板,例如我要建立一個 laravel.test
cd ~/laradock/nginx/sites cp laravel.conf.example laravel.test.conf vim laravel.test.conf
修改如
server_name laravel.test; root /var/www/public;
讓網址輸入 http://laravel.test 會指向 127.0.0.1
sudo vim /etc/hosts 127.0.0.1 laravel.test
重新啟動 Laradock
注意要使用 stop 和 start。因為 docker-compose down 會卸載容器;docker-compose up 會重新建立容器,設定會一切重投
cd ~/laradock/ sudo docker-compose stop sudo docker-compose start nginx mysql workspace php-fpm docker-in-docker
MySQL
參考,預設使用最後一版,目前是 MySQL 8.0,預設帳密都是 root,這可以在 Laradock 中的 .env 搜尋 “MYSQL_ROOT_PASSWORD” 找到
vim .env /MYSQL_ROOT_PASSWORD
MYSQL_VERSION=latest MYSQL_DATABASE=default MYSQL_USER=default MYSQL_PASSWORD=secret MYSQL_PORT=3306 MYSQL_ROOT_PASSWORD=root MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d
我們先離開,修改密碼驗證的模式
sudo vim ~/laradock/mysql/my.cnf
[mysql] [mysqld] sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION" character-set-server=utf8 default_authentication_plugin=mysql_native_password <----加入這行,改用 mysql_native_password
sudo docker-compose down sudo rm -rf ~/.laradock/data <----務必刪除 sudo docker-compose up -d nginx mysql phpmyadmin
因為是採用 Docker 映像檔,若進入 mysql 要使用 docker-compose 指令
sudo docker-compose exec mysql bash
然後修改密碼,我們使用 root 登入 mysql,修改 Laradock 預設時新增的使用者叫做 default 的密碼
mysql -uroot -proot > ALTER USER 'default'@'%' IDENTIFIED WITH mysql_native_password BY 'a_A@123456'; > GRANT ALL PRIVILEGES ON * . * TO 'default'@'%'; > select user, host, plugin from mysql.user; > FLUSH PRIVILEGES;
前往 http://localhost:8080 進入 phpmyadmin,Server 輸入 mysql,Username 與 Password 輸入剛剛修改後的:default/a_A@123456。
phpMyAdmin
參考,我偏好 MySQL 8 所以啟用
sudo docker-compose up -d mysql phpmyadmin
打開 http://localhost:8080 就可進入。若要改 port ,可以到 Laradock 的 .env 修改 PMA_PORT=8080
ashley
2020-08-27 - 11:23
`sudo usermod -aG docker 你的ubuntu帳號` 之後應該不用重啟系統,就是登出再登入一次,我這樣做是可以的,參考看看。
JSN
2020-12-15 - 11:25
非常感謝你 :)