日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

docker yum php mysql_Centos下 使用Docker, 配置PHP+Nginx+Mysql(多PHP版本)

發布時間:2025/3/15 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker yum php mysql_Centos下 使用Docker, 配置PHP+Nginx+Mysql(多PHP版本) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Centos下 使用Docker, 配置PHP+Nginx+Mysql(多PHP版本)

2年前

閱讀 6556

評論 0

喜歡 0

### 一、先安裝Dokcer:

1、安裝一些必要的系統工具:

`sudo yum install -y yum-utils device-mapper-persistent-data lvm2`

2、添加軟件源信息:

`sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo`

3、更新 yum 緩存:

`sudo yum makecache fast`

4、安裝 Docker-ce:

`sudo yum -y install docker-ce`

5、啟動 Docker 后臺服務

`sudo systemctl start docker`

6、讓 Docker 隨系統自動啟動

`sudo systemctl enable docker`

### 二、配置NMP容器:

1、下載相應鏡像到本地

```

docker pull php:7.2-fpm

docker pull php:7.2-cli

docker pull mysql:5.7

docker pull nginx:1.11

```

2、創建相應容器

首先,我們來創建`php:7.2-fpm`的容器并命名為`php7.2fpm`,并將容器的`9000`端口映射到主機的`9000`端口。

把主機的`/home/ubuntu/nginx/www`目錄掛載到容器的`/www`目錄(這個目錄用于存放php腳本文件)

`docker run -d -p 9000:9000 --name php7.2-fpm -v /test/nginx/www:/www php:7.2-fpm`

在創建這個容器之前要先把前面創建的`php7.2fpm`停止,不然`9000`端口會出現沖突。

`docker run -d -p 9000:9000 --name php7.2-cli -v /test/nginx/www:/www php:7.2-cli`

注意1:不能同時運行多個php容器,要使用不同版本時,必須先`stop`正則運行的php容器,在`start`另一個版本的php容器

注意2:如果你想同時在線運行多個PHP容器,可以分別配置不同的端口號,這樣就不會產生端口沖突了

3、創建nginx容器

把配置主機的`/test/nginx/conf`目錄掛載到容器的`/etc/nginx/conf.d`目錄,用于處理`nginx`的配置文件,文件根目錄與PHP的指向同一個。

`docker run -d -p 80:80 --name nginx1.11 -v /test/nginx/conf:/etc/nginx/conf.d -v /test/nginx/www:/www nginx:1.11`

4、創建mysql容器,-e MYSQL_ROOT_PASSWORD=123456將mysql容器的root密碼初始化為123456

`docker run -d -p 3306:3306 --name mysql5.7 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7`

5、創建infobright容器,與MySQL容器的創建方法類似

`docker run -d -p 5029:5029 --name myinfobright -e MYSQL_ROOT_PASSWORD=root meatcar/infobright`

6、創建redis3.2容器,redis-server --apendonly yes 表示在容器執行redis-server啟動命令,并打開redis持久化配置

`docker run -d -p 6379:6379 --name redis3.2 -v /test/redis/data:/data redis:3.2 redis-server --appendonly yes`

7、創建memcached容器

`docker run -d -p 11211:11211 --name memcached -v /test/memcached/data:/memcached memcached:latest`

### 三、nginx配置文件與php文件存放

1、在`/test/nginx/conf/`目錄中新建一個`default.conf`文件,寫入以下內容:

```

server {

# 端口號

listen 80;

# 本機IP地址,這個一般都不用改

server_name localhost;

# 你需要綁定到哪個文件夾

root /www/;

location / {

# 默認加載文件

index index.html index.php;

# 開啟路由規則偽靜態

if (!-e $request_filename) {

rewrite ^(.*)$ /index.php?s=/$1 last;

break;

}

}

# 500 404的錯誤文件

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root /usr/share/nginx/html;

}

location ~ \.php {

# 這里的ip是對應PHP版本的容器的ip地址,查看容器IPAddress地址可以使用docker inspect命令

fastcgi_pass 172.17.0.2:9000;

fastcgi_index index.php;

client_max_body_size 22m;

# 這兩句也是用于開啟路由規則偽靜態

fastcgi_split_path_info ^(.+\.php)(.*)$;

fastcgi_param PATH_INFO $fastcgi_path_info;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

}

```

2、上傳完成nginx的配置文件后,我們一定要記得重啟下nginx的容器,否則是不會生效的。

`docker restart nginx1.11`

3、上傳項目文件

在docker中,我們一般會將本地宿主機的目錄掛載到容器目錄中,通過映射的方式可以讓容器直接運行宿主機的代碼,

例如下面的新建容器命令:

`docker run -d -p 9000:9000 --name php7.2-fpm -v /test/nginx/www:/www php:7.2-fpm`

實際上我們是將本地`/test/nginx/www`中的文件,共享給了docker的`php7.2-fpm`容器運行,而容器的虛擬目錄則是`/www`,

這里注意,我們說的虛擬目錄是這個目錄在你用服務器中是看不到的,因為目前為止docker還不支持我們直接操作容器目錄,只能操作宿主機目錄。

所以現在我們在`/test/nginx/www/`目錄中新建一個`index.php`文件,然后隨便寫入以下內容。

最后在瀏覽器中,訪問你的服務器IP即可成功運行這個PHP文件了。

### 四、安裝PHP擴展

默認情況下,PHP的容器都是空白的,對應的擴展需要執行安裝,

我們使用`docker exec -it php7.2-fpm /bin/bash`命令進行該容器。

然后執行下面的代碼安裝擴展:

```

# 普通擴展安裝

docker-php-ext-install mysqli

docker-php-ext-install pdo

docker-php-ext-install gd2

docker-php-ext-install gd

docker-php-ext-install curl

docker-php-ext-install sockets

# 安裝redis擴展

curl -L -o /tmp/redis.tar.gz https://github.com/phpredis/phpredis/archive/3.1.0.tar.gz

tar xfz /tmp/redis.tar.gz

rm -r /tmp/redis.tar.gz

mkdir -p /usr/src/php/ext

mv phpredis-3.1.0 /usr/src/php/ext/redis

docker-php-ext-install redis

# 安裝memcached擴展

# 我也失敗了,沒找到,大神說要用dockerfile,但小牛還沒學到那里,先放棄了

```

最后使用`exit`命令對出容器,然后再使用`docker restart php7.2-fpm`命令重啟PHP容器,使擴展生效。

### 五、通過Navicat連接數據庫

使用`docker exec -it mysql5.7 /bin/bash`命令進入容器。

再通過`mysql -uroot -p`命令,輸入密碼`123456`后進入mysql命令行。

再輸入`GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;`進行外部登錄授權

再輸入`flush privileges;`使命令生效,最后使用`exit;`命令退出mysql命令行。

最終輸入`exit`退出容器。

這時候我們使用Navicat就能夠連接數據庫了。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的docker yum php mysql_Centos下 使用Docker, 配置PHP+Nginx+Mysql(多PHP版本)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。