配置簡單的 LNMP 環(huán)境
這里使用 docker-compose 的方式,配置內(nèi)容如下:
docker-compose.ymlversion: "2"services: # Nginx 1.11.10: https://hub.docker.com/_/nginx/ web: image: nginx:1.11.10 ports: # 將主機的 8080 端口映射到容器的 80 端口 - 8080:80 depends_on: - php # 同 php 一起共享 ./apps 目錄 volumes_from: - php # 創(chuàng)建一個數(shù)據(jù)卷,由 ./images/nginx/config => /etc/nginx/conf.d volumes: - ./images/nginx/config:/etc/nginx/conf.d:ro # PHP 7.1-fpm: https://hub.docker.com/_/php/ php: image: php:7.1-fpm volumes: - ./apps:/mnt/apps # MySQL 5.7: https://hub.docker.com/_/mysql/ database: image: mysql:5.7 # 配置一些環(huán)境變量,具體的環(huán)境變量細(xì)節(jié)可以訪問上面的網(wǎng)址查看 environment: MYSQL_ROOT_PASSWORD: "root" MYSQL_USER: "dailybird" MYSQL_PASSWORD: "dailybirdo" volumes: - ./database:/var/lib/mysql
default.conf
在 docker-compose.yml 中,已將 Nginx 的配置目錄 /etc/nginx/conf.d 映射到 ./images/nginx/config 目錄中。根據(jù) Nginx 的配置,處于該目錄下所有 .conf 文件都會作為配置文件,因而我們可以新建一個 default.conf 進(jìn)行配置。
server{ listen 80; server_name localhost; root /mnt/apps; index index.php index.html index.htm; location / { index index.php index.html; try_files $uri $uri/ /index.php?$query_string; } location ~ /.php$ { # 這里使用 php 作為內(nèi)部域名連接 php 容器 fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param script_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }}創(chuàng)建容器
在 docker-compose.yml 所在目錄下,執(zhí)行以下指令,創(chuàng)建支撐 LNMP 服務(wù)的容器組:
docker-compose up -d
這之后,Docker 會創(chuàng)建一個 bridge 類型的網(wǎng)絡(luò)并將這三個容器接入網(wǎng)絡(luò)內(nèi)。
此外,由于 docker-compose.yml 中的數(shù)據(jù)卷配置,在當(dāng)前目錄下,還會創(chuàng)建 database 目錄用于映射數(shù)據(jù)庫文件目錄;創(chuàng)建 apps 目錄用于存放 web 應(yīng)用;創(chuàng)建 images/nginx/config 目錄映射 Nginx 配置文件目錄。
測試
在 docker-compose.yml 中,我們進(jìn)行了 8080 => 80 的端口映射;此外,在 default.conf 中,Nginx 的請求被指向了容器的 /mnt/apps 目錄,而該目錄與主機的 ./apps 目錄形成了映射,因而我們可以通過 localhost:8080 訪問到 Nginx 容器的服務(wù)。當(dāng)然,還要注意主機端口的占用情況,必要時可以在 docker-compose.yml 中將 8080 端口改為其他。
此時,我們只需要在 ./apps 目錄下創(chuàng)建一個簡單的 PHP 文件,如 test.php,然后便可以通過 localhost:8080/test.php 訪問了。
向 PHP 鏡像中添加擴展
如果需要向 PHP 中添加擴展,則需要借助 Dockerfile,并按照官方鏡像給出的方法,安裝相應(yīng)的擴展,詳情可見Docker - PHP7.1-fpm。如下,可在 PHP 鏡像中添加 gd pdo_mysql zip opcache 擴展。
# Dockerfile 文件FROM php:7.1-fpmMAINTAINER dailybird <dailybird@mail.com>RUN apt-get update && apt-get install -y libpng12-dev libjpeg-dev / && rm -rf /var/lib/apt/lists/* / && docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr / && docker-php-ext-install gd pdo_mysql zip opcache
新聞熱點
疑難解答
圖片精選