———————— 安裝步驟 - 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; } }