CentOS 7.8 64位 Docker + PHP + Nginx

1. Docker安裝

參考官方推薦的方法安裝Docker
https://docs.docker.com/engine/install/centos/#install-using-the-repository

1.1 設(shè)置存儲庫
sudo yum install -y yum-utils
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

拋出異常

Loaded plugins: fastestmirror
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/doc ker-ce.repo
Could not fetch/save url https://download.docker.com/linux/centos/docker-ce.repo to file /etc/yum.repos.d/docker-ce.repo: [Errno 12] Timeout on https://download.docker.com/linux/centos/docker-ce.repo: (28, 'Operation timed out after 30000 milliseconds with 0 out of 0 bytes received')

換源

 sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.2 安裝Docker最新版本
 sudo yum install docker-ce docker-ce-cli containerd.io
1.3 啟動Docker
 sudo systemctl start docker
1.4 通過運行hello-world 映像來驗證是否正確安裝了Docker Engine 。
sudo docker run hello-world
image.png

運行以上信息說明安裝成功

如果進行pull失敗, 可以換國內(nèi)源
Docker 官方中國區(qū)
https://registry.docker-cn.com
網(wǎng)易
http://hub-mirror.c.163.com
中國科技大學(xué)
https://docker.mirrors.ustc.edu.cn
阿里云
https://pee6w651.mirror.aliyuncs.com

修改源

vim /etc/docker/daemon.json

添加以下內(nèi)容
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

sudo systemctl daemon-reload
sudo systemctl restart docker

2. PHP安裝

php鏡像
https://hub.docker.com/_/php?tab=tags&page=1&ordering=last_updated
發(fā)行版本說明
https://www.debian.org/releases/
找到穩(wěn)定版本的php-fpm版進行安裝,我這邊安裝的是php7.4

docker pull php:7.4.19-fpm-buster

3. 安裝nginx

nginx鏡像
https://hub.docker.com/_/nginx?tab=tags&page=1&ordering=last_updated
同樣找到穩(wěn)定版本進行安裝

docker pull nginx:stable-perl

查看已經(jīng)安裝好的鏡像

docker image ls
image.png

4. 新建Docker掛載文件夾(根據(jù)自己需求存放)

cd /
mkdir docker 
cd docker
mkdir php # php配置等信息
mkdir nginx # nginx配置等信息
mkdir www # 存放網(wǎng)頁代碼

5. 運行一個PHP測試容器,目的拷貝出默認配置文件

 docker run --name  myphp-fpm  -d bfdbfe3debeb

查看運行中的容器

docker ps
image.png

將php容器內(nèi)的配置文件拷貝到主機中,這里粗暴的直接將整個文件夾拷貝出來

docker cp d47ae217641f:/usr/local/etc /docker/php

cp命令會將容器etc目錄拷貝到/docker/php/etc下,強迫癥手動將etc目錄里的內(nèi)容全部移動到php下,然后刪除了etc文件夾

image.png

6. 運行一個Nginx測試容器,目的同樣拷貝出默認配置文件

docker run --name  mynginx  -d 56e67f61e79c

查看運行中的容器

docker ps
image.png
docker cp a2167091f8a7:/etc/nginx /docker
image.png

7. 刪除測試容器

# 停止容器
docker stop d47ae217641f
docker stop a2167091f8a7

# 刪除容器
docker rm d47ae217641f
docker rm  a2167091f8a7

8. 創(chuàng)建正式容器

創(chuàng)建php容器
docker run -idt --name myphp-7.4.19-fpm-buster -v /docker/php:/usr/local/etc:ro  -v /docker/www/:/var/www/html/  bfdbfe3debeb 

--name 容器名稱
-v 掛載目錄
-i 以交互模式運行容器,通常與 -t 同時使用;
-t 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;
-d 后臺運行容器,并返回容器ID;

創(chuàng)建nginx容器
docker run -idt --name mynginx-stable-perl -p 80:80 -p 443:443 -v /docker/nginx:/etc/nginx:ro -v /docker/log/nginx:/var/log/nginx -v /docker/www/:/usr/share/nginx/html  --link myphp-7.4.19-fpm-buster:php  56e67f61e79c

/docker/www
新建一個html文件


image.png

image.png

瀏覽器訪問,查看是否運行成功


image.png
修改Nginx配置

/docker/nginx/conf.d/default.conf

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;
  
    location / {
        # nginx訪問目錄,這里需要注意,目錄設(shè)置的是nginx容器的目錄
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        autoindex  off;
    }
    
    location ~ \.php$ {
        # php:9000 對應(yīng)之前運行容器時的命令 --link myphp-7.4.19-fpm-buster:php,端口號是php容器的端口
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        # php訪問目錄,這里需要注意,目錄設(shè)置的是php容器的目錄
        fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name; 
        include        fastcgi_params;
    }
}
安裝php常用擴展

redis擴展
進入php容器

 docker exec -it 9a078e7f3e99 bash

安裝常用工具包

apt-get update && apt-get install make cmake gcc g++ bison libncurses5-dev build-essential vim autoconf

如果 apt-get update命令卡可以換成阿里云鏡像

sed -i "s@http://deb.debian.org@http://mirrors.aliyun.com@g" /etc/apt/sources.list
apt-get clean
apt-get update

安裝redis擴展

pecl install igbinary
pecl install lzf
pecl install zstd
pecl install redis

安裝pdo_mysql擴展(自帶)

docker-php-ext-install pdo_mysql

添加擴展配置文件
/docker/php/php/conf.d/redis.ini

extension=igbinary.so
extension=lzf.so
extension=zstd.so
extension=redis.so

/docker/php/php/conf.d/pdo_mysql.ini

extension=pdo_mysql

重啟php容器

docker restart 9a078e7f3e99

查看phpinfo()

image.png

安裝完成!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容