CentOS 安装 laradock 以及运行 Laravel 项目

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 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 1

访问失败,用ip addr 查看了下,没有CHANGE_SOURCE设置的IP地址,您遇到过吗?

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!