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/