CentOS 安裝 laradock 以及執行 Laravel 專案

GitPush發表於2019-11-19

Docker 官方文件

https://docs.docker.com/install/linux/dock...

Laradock 官方文件

https://laradock.io/getting-started/

Laradock 相比其他虛擬環境,其實最大的優勢是可以在生產環境使用,本地和線上部署同一套環境,能儘可能減少環境帶來的隱藏問題,因此可以說是開發者的必備技能。

安裝 Docker

首先安裝 docker 倉庫

sudo yum install -y yum-utils \
 device-mapper-persistent-data \
 lvm2

然後設定穩定版本的 dock 倉庫,倉庫用來確保執行 yum update 的時候不更新更高版本,如有錯誤理解請指正。

sudo yum-config-manager \
 --add-repo \
 https://download.docker.com/linux/centos/docker-ce.repo

安裝最新版本的 Docker Engine-Community 和 containerd,或者轉到下一步安裝特定版本:

sudo yum install docker-ce docker-ce-cli containerd.io

(可選)如果需要安裝特定版本

# 列出可用版本
yum list docker-ce --showduplicates | sort -r
# 安裝特定版本
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

啟動 Docker

sudo systemctl start docker

透過執行 hello-world 映像來驗證是否正確安裝了 Docker Engine-Community 。

sudo docker run hello-world

出現 Hello from Docker! 說明 docker 安裝成功

安裝 Docker Compose

Compose 專案是Docker官方的開源專案,負責實現Docker容器叢集的快速編排。

由於 laradock 是由 docker-compose 命令來管理的,所以我們還需要安裝這個管理命令。

專案 GIT 地址 https://github.com/docker/compose/releases

注意安裝的版本,git 有版本對照表

curl -L https://github.com/docker/compose/releases/download/1.25.0-rc4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose\
chmod +x /usr/local/bin/docker-compose

檢視是否安裝成功

docker-compose -v

安裝 git (已安裝跳過)

yum install -y git

安裝 laradock

git clone https://github.com/Laradock/laradock.git laradock

也可直接獲取專案,這裡採用 git 方式安裝

安裝目錄可以和專案平級,也可以包含在專案中。

我們選擇的目錄結構

+ laradock
+ project1
+ project2

複製 laradock 配置檔案 .env

cp env-example .env

修改 .env 改為自己需要的引數

# 專案路徑,如果和 laradock 平級
APP_CODE_PATH_HOST=../
# PHP 版本號
PHP_VERSION=7.3
# Mysql 版本號
MYSQL_VERSION=5.7

啟動 laradock 容器

我們安裝 nginx mysql redis 三個容器,laradock 會預設安裝 php-fpm workspace 這兩個容器。這一步比較消耗時間,依據網路情況,預計30分鐘左右,請耐心等待。

docker-compose up -d nginx mysql redis

如果你需要進入容器,使用下列命令,如果使用 root 許可權,去掉 -user 引數就好。

docker-compose exec —user=laradock workspace bash

比如你需要 composer 安裝 laravel 包,比如設定定時任務,都需要在容器中進行。

安裝完成後,使用以下命令檢視

docker-compose ps

會列出正在執行的容器

 Name                          Command               State                    Ports
---------------------------------------------------------------------------------------------------------------
laradock_docker-in-docker_1   dockerd-entrypoint.sh            Up      2375/tcp, 2376/tcp
laradock_mysql_1              docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp, 33060/tcp
laradock_nginx_1              /bin/bash /opt/startup.sh        Up      0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
laradock_php-fpm_1            docker-php-entrypoint php-fpm    Up      9000/tcp
laradock_redis_1              docker-entrypoint.sh redis ...   Up      0.0.0.0:6379->6379/tcp
laradock_workspace_1          /sbin/my_init                    Up      0.0.0.0:2222->22/tcp

至此,環境搭建完成

如果某個服務狀態沒有啟動成功,重啟服務,下列命令為重啟、停止、啟動命令

docker-compose restart|stop|start nginx|mysql|php-fpm

如果想刪除某個容器或者更改相關版本,如下命令操作,我們以 mysql 為例

# 修改 .env 檔案
MYSQL_VERSION=5.7 # 預設為 latest
# 停止mysql容器
docker-compose stop mysql
# 刪除舊資料庫資料
rm -rf ~/.laradock/data/mysql
# !注意重啟docker應用,然後再構建新 mysql
docker-compose build mysql
# 重新建立容器
docker-compose up -d nginx mysql
# 檢視現有 mysql 版本
docker inspect laradock_mysql_1

執行 Laravel 專案

配置 nginx conf 檔案,複製 laradock 目錄下檔案

cp nginx/sites/laravel.conf.example laravel.conf

然後修改 laravel.conf 檔案,修改 server_name 和 root 目錄

server {

 listen 80;
 listen [::]:80;

 # For https
 # listen 443 ssl;
 # listen [::]:443 ssl ipv6only=on;
 # ssl_certificate /etc/nginx/ssl/default.crt;
 # ssl_certificate_key /etc/nginx/ssl/default.key;

 server_name www.laravel.com laravel.com;
 root /var/www/laravel/public;
 index index.php index.html index.htm;
 ...
}

修改完成後儲存,重啟容器 nginx

docker-compose restart nginx

然後訪問 www.laravel.com 就可以看到專案執行,前提是該域名已經指向該伺服器 IP。

連線容器 mysql 以及 redis 注意事項,需要修改 laravel .env 配置檔案

DB_HOST=mysql
REDIS_HOST=redis

如果訪問失敗一般是如下情況
1.nginx 配置出錯

# 進入 nginx 容器
docker-compose exec nginx bash
# 執行測試命令
nginx -t

2.專案目錄許可權問題

chmod -R 775 storage/
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章