1. 程式人生 > >使用 docker 搭建 nginx+php-fpm 環境 (兩個獨立鏡像)

使用 docker 搭建 nginx+php-fpm 環境 (兩個獨立鏡像)

edge medium ttf mtab asc abd render 所有 dnf

  1. 獲取 nginx 鏡像
docker search nginx
docker pull nginx
  1. 使用nginx鏡像開啟 nginx 應用容器
docker run -d --name nginx -p 8080:80 -v /tmp:/usr/share/nginx/html docker.io/nginx 

說明

  1. -d 後臺運行
  2. --name 自定義容器名稱
  3. -p 8080:80 宿主機的8080 映射到容器的80端口
  4. -v 宿主機 tmp 目錄映射容器地址(nginx服務器項目默認路徑)

在/tmp 目錄下新建一個 index.html 裏面打個 hello nginx
訪問 127.0.0.1:8080 正確的情況下會出現該文件內容

  1. 獲取 php-fpm 鏡像
docker search php-fpm
docker pull bitnami/php-fpm

4.運行 php-fpm

docker run -d -v /tmp:/usr/share/nginx/html --name php-fpm docker.io/bitnami/php-fpm 
  1. 查看 php-fpm IP
docker inspect php-fpm | grep "IPAddress"
  1. 修改 nginx 配置文件 使他跟 php-fpm 關聯起來
#copy 配置文件
docker cp nginx:/etc/nginx/conf.d/default.conf ./default.conf
vim ./default.conf

#copy 下面的
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm index.php;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root           html;
        fastcgi_pass   172.17.0.2:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html/$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache‘s document root
    # concurs with nginx‘s one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}
# 修改 fastcgi_pass   127.0.0.1:9000;  為:
# fastcgi_pass   172.17.0.2:9000;
# 其中 172.17.0.2  上面查看 IP 獲取的 每次都不一樣
#覆蓋到 nginx 
docker cp ./default.conf nginx:/etc/nginx/conf.d/default.conf
#重啟 nginx
docker restart nginx
  1. 新建 /tmp/index.php
<?php
    echo phpinfo();
  1. 訪問本地 127.0.0.1 即可
  2. docker 常用命令

進入容器

docker exec -it nginx /bin/bash

復制容器內的配置到宿主機器

docker cp nginx:/etc/nginx/conf.d/default.conf ./default.conf

復制宿主機器文件到容器

docker cp ./default.conf myNginx:/etc/nginx/conf.d/default.conf

docker 重啟容器

docker restart nginx

停止所有容器

docker stop $(docker ps -a -q)

刪除所有容器

docker rm $(docker ps -a -q)

使用 docker 搭建 nginx+php-fpm 環境 (兩個獨立鏡像)