使用 docker-compose 安装 php 运行环境 —— link 的方式
———————— 安装步骤 - link 的方式 ————————
特别说明:此方式不建议,并于即将被废弃,请查看 network 的方式。
直接上步骤:
1、centOS下需要升级 yum —— 不然可能会有一些神经病的错误发生
yum update
2、将已经写好的 yml 包以及 Dockerfile 等下载到根目录:
cd /
git clone https://github.com/lftm1111/docker-compose-php.git
3、进入 docker-composer-php 目录,即 docker-compose.yml 所在的目录
cd docker-compose-php
4、配置并修改.env 文件
cp .env.example .env
vim .env
—— .env 配置建议:
// mac上 DIR_WWW=/Users/linfeng/data/www/ DIR_REDIS_DATA=/Users/linfeng/data/redis/ DIR_MYSQL_DATA=/Users/linfeng/data/mysql/ // centOS 上 DIR_WWW=/data/www/ DIR_REDIS_DATA=/data/redis/ DIR_MYSQL_DATA=/data/mysql/
5、运行 docker-compose:
docker-compose up -d
6、如果要启动的是里面的 docker-compose.build.yml 文件,则执行:
docker-compose -f docker-compose.build.yml up -d
—— 关于docker-compose.yml 文件和 docker-compose.build.yml 的区别,请看下面的特别说明
—— 好了,执行成功后,会有四个容器在运行。配置虚拟主机和项目,这个都不知道那就没办法了。
// 特别说明:
我们下载下来的包里面有两个文件,其中只有一处差别,在 phpfpm 那里,分别如下:
docker-compose.yml 部分:
phpfpm: image: raven666/ct-phpfpm:latest container_name: ct-phpfpm expose: - "9000"
docker-compose.build.yml 部分:
phpfpm: image: raven666/ct-phpfpm:latest container_name: ct-phpfpm build: context: . dockerfile: Dockerfile expose: - "9000"
—— 因为 docker-compose.yml 文件的每个服务都需要指定镜像,指定的方式有两种:
1、直接指定 image,会从 dockerhub 拉取。
2、指定 build ,即指定本地的 Dockerfile文件进行构建镜像。
那么,docker-compose.build.yml 中指定了 build,image 参数表示的是构建后的名字。
—— 所以,第一种是直接拉取叫做 raven666/ct-phpfpm:v1 的镜像,其实这个镜像就是我构建后传到 dockerhub 的
—— 第二种,就是使用本地文件 Dockerfile 重新构建一次这个 phpfpm 镜像,并在本地命名为 raven666/ct-phpfpm:v1
—— 项目目录:/data/www
—— 虚拟主机配置目录:/docker-compose-php/conf/nginx/conf.d
—— 以上的方法中使用到的是 link,而这个即将会被废弃,所以我们的将会出使用关于 network 的方法。关于 docker 的 network 基础知识,不明白的,可以看本博客的另一篇文章。
// 虚拟主机配置示例 —— /docker-compose-php/conf/nginx/conf.d/laravel.xxx.con.conf:
server { listen 80; set $root /data/www/laravel/public; server_name laravel.xxx.com; root $root; index index.php index.html index.htm; if (!-e $request_filename) { rewrite ^/(.*) /index.php?$1 last; } location ~ index\.php { root $root; fastcgi_pass fpm:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $root$fastcgi_script_name; include fastcgi_params; } }