首頁 >後端開發 >php教程 >使用docker建立整合服務lnmp環境

使用docker建立整合服務lnmp環境

不言
不言原創
2018-04-09 15:14:231943瀏覽

本篇文章主要介紹了使用docker建立整合服務lnmp環境,,現在分享給大家,也給有需要的朋友做個參考。

在掌握了docker的基本指令之後,我也是想著去用docker做一點實際的配套環境,就拿自己最常用的lnmp環境來做測試。配套環境運作的順序依序是mysql->php->nginx,至於為什麼,在下面會解釋。

1.MySQL

之後服務運行的鏡像如無特別的提示,都是從官方拉取的鏡像,對於小企業以及個人開發者,官方的鏡像較為安全,省心省力。

# 拉取镜像
$ docker pull mysql
# 运行MySQL
$ docker run MySQL --name mysql -d \
    -p 3306:3306 \
    -v /var/lib/mysql/:/var/lib/mysql/ \
    -e MYSQL_ROOT_PASSWORD=ilovec \

下面依序講解上面運行各個參數

  1. --name: 指定的運行的容器的名稱

  2. -d: 後台運行該容器

  3. #-p: 宿主機與容器的連接埠的對應

  4. -v: 容器掛載到本機的目錄對應

  5. -e: 指定運行容器的環境變數

2.PHP

拉取官方鏡像php-fpm,根據自己需要的php版本去下載,但是官方的鏡像有些php常用的包沒有包含在內,因此我們需要使用dockerfile去重新建置一下,下面是在Dockerfile裡面安裝mysqli和pdo兩個php擴充包。

FROM php:7.1-fpm
# Install modules
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
RUN docker-php-ext-install pdo_mysql
CMD ["php-fpm"]

運行php-fpm

docker run -d -p 9000:9000 \
  --name php-fpm \
  --link mysql \
  -v /data/wwwroot/:/data/wwwroot/ \
  php-fpm

注意參數當中的--link,這個參數在容器之間的連接十分有用,他會在當前容器的/etc/hosts裡面添加一條域名解析,通過該域名可以連接到對應的容器,例如在上述的php-fpm裡面,link到mysql,那麼在php-fpm裡面的php程式可以透過mysql字串連接到剛剛運行的mysql容器,cat /etc/hosts就可以看到裡面的解析記錄了。

172.17.0.2 mysql b41d2569c06d

3.Nginx

#透過以下指令執行nginx,由於nginx需要透過127.0.0.1 :9000埠去連接php-fpm來解析php文件,所以需要透過link來連接php-fpm。

docker run -d -p 80:80 \
  --name nginx \
  --link php-fpm \
  -v /data/wwwroot/:/data/wwwroot/ \
  nginx

值得注意的是如果nginx解析文件的時候,如果請求的是靜態文件,會直接傳回該nginx容器裡面的文件到客戶端,如果請求的是php文件,他會把這個請求轉送到php-fpm,然後php-fpm去本地去找php檔案來解析,也就是php-fpm容器本身的檔案。

依序運行上面的3個服務的啟動指令之後就可以搭建我們常見的lnmp了。但每次執行服務都需要執行上面的指令顯得有點麻煩,我們可以使用docker-compose指令去進行集中管理。

使用docker-compose

只需要建立一個lnmp目錄,然後在lnmp目錄下建立docker-compose.yml輸入下面指令即可管理整合化的環境。
 其實可以通過命令的名字就很容易知道各個指令的意思。

version: 由於docker-compose是一個發展中的工具,很有可能每個版本的指令都有所不同,因此需要在開頭聲明docker-compose指令的適用版本。

image: 指服務透過哪個鏡像進行運作。

depends_on: 這個指明了軟體的依賴與哪個軟體,其實也是宣告了軟體運作的順序。

version: '2'

services:
  mysql:
    image: "mysql"
    ports:
      - "3306:3306"
    volumes:
      - /var/lib/mysql/:/var/lib/mysql/
    environment:
      MYSQL_ROOT_PASSWORD: password
      
  php-fpm:
    image: "php-fpm"
    depends_on:
      - mysql
    links:
      - mysql
    ports:
      - "9000:9000"
    volumes:
      - /data/wwwroot/:/data/wwwroot/

  nginx:
    image: "nginx"
    depends_on:
      - php-fpm
    links:
      - php-fpm
    volumes:
      - /data/wwwroot/:/data/wwwroot/
    ports:
      - "80:80"

之後在這個lnmp目錄下執行compose相關指令就可以控制。

# 运行docker-compose服务
$ docker-compose up -d
# 停止服务
$ docker-compose stop
# 删除该服务相关的容器
$ docker-compose rm
# 运行已存在docker-compose的服务
$ docker-compose start

相關推薦:

#在Docker中建立PHP開發環境


以上是使用docker建立整合服務lnmp環境的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn