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

參考

Comments

  1. `sudo usermod -aG docker 你的ubuntu帳號` 之後應該不用重啟系統,就是登出再登入一次,我這樣做是可以的,參考看看。

發表迴響