首页 » SEO优化 » php7files技巧_Docker Compose安装运用及搭建nginxphpmysql根本应用实例

php7files技巧_Docker Compose安装运用及搭建nginxphpmysql根本应用实例

访客 2024-11-10 0

扫一扫用手机浏览

文章目录 [+]

通过 Docker-Compose 用户可以很随意马虎地用一个配置文件定义一个多容器的运用,然后利用一条指令安装这个运用的所有依赖,完成构建。
Docker-Compose 办理了容器与容器之间如何管理编排的问题。

Compose 中有两个主要的观点:

php7files技巧_Docker Compose安装运用及搭建nginxphpmysql根本应用实例

做事 (service) :一个运用的容器,实际上可以包括多少运行相同镜像的容器实例。
项目 (project) :由一组关联的运用容器组成的一个完全业务单元,在 docker-compose.yml 文件中定义。

利用Docker-Compose条件还要知道Dockerfile的利用,可参考另一篇文章中有先容: dockerfile配置利用

php7files技巧_Docker Compose安装运用及搭建nginxphpmysql根本应用实例
(图片来自网络侵删)
二、 Docker Compose的安装利用:

1):安装

Docker Compose是独自产品,须要在安装docker后单独安装。
干系官方文档查看: https://docs.docker.com/compose/

在github地址查看版本安装: https://github.com/docker/compose/releases

目前为止最新为1.29.2,安装此版本。

#下载sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose#添加可实行权限sudo chmod +x /usr/local/bin/docker-compose

安装完成,查看版本

docker-compose --version

把稳:如果安装完成后,docker-compose命令无法利用,请检讨您的路径。
您还可以/usr/bin在路径中创建一个软链接如下。

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

2):基本命令利用

docker-compose up //启动yml文件定义的 containerdocker-compose up -d //后台运行docker-compose up --help //查看up帮助docker-compose -f docker-compose.yml up //-f 指定yml文件docker-compose stop //停滞docker-compose startdocker-compose ls //查看docker-compose down //停滞删除docker-compose psdocker-compose imagesdocker-compose exec {service_name} {bash}

三、Compose搭建nginx+php+mysql实例

安装版本如下:

centos 8 ,docker 20.10.7,docker-compose 1.29.2,nginx 1.20.1,php 8,mysql 5.7.34

1):构建目录构造

镜像版本,默认选择标签Tag为 latest 最新版本,别写错了,写错直接报错read: connection reset by peer

创建目录lnmp_compose,将干系配置文件放在此目录。

目录构造如下:

[root@localhost lnmp_compose]# tree.|-- docker-compose.yml|-- mysql| `-- conf.d| `-- my.cnf|-- nginx| |-- conf.d| | `-- www.conf| `-- Dockerfile|-- php| `-- Dockerfile`-- www|-- conn.php`-- index.php6 directories, 7 files

2):配置php的Dockerfile

由于php涉及到很多扩展库,以是我们须要用到Dockerfile配置扩展创建新的镜像。

vim /lnmp_compose/php/Dockerfile

输入以下内容,从centos镜像采取yum安装php8的版本。
内容参考: yum办法安装php最新版

FROM centosRUN groupadd -g 1002 www && useradd -u 1001 -g www -s /sbin/nologin www \&& yum -y install epel-release yum-utils \&& yum -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm \&& dnf -y module list php \&& dnf -y module enable php:remi-8.0 \&& dnf -y install php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mbstring php-curl php-xml php-pear php-bcmath php-json php-redis --skip-broken \&& sed -i 's/user = apache/user = www/g' /etc/php-fpm.d/www.conf \&& sed -i 's/group = apache/group = www/g' /etc/php-fpm.d/www.conf \&& sed -i 's/listen = \/run\/php-fpm\/www.sock/listen = 0.0.0.0:9000/g' /etc/php-fpm.d/www.conf \&& sed -i 's/listen.allowed_clients = 127.0.0.1/;listen.allowed_clients/g' /etc/php-fpm.d/www.conf \&& mkdir /run/php-fpmCMD ["php-fpm","--nodaemonize"]

Dockerfile干系参数阐明,创建www用户及www用户组,安装php扩展包。

需把稳的坑:

1. 创建www用户和组,uid和gid须要和宿主机www用户同等,宿主机 id www 查看gid和uid。
这里宿主机gid 1002,uid 1001。
2. /etc/php-fpm.d/www.conf 配置文件,默认监听 listen = run/php-fpm/www.sock 改为 listen = 0.0.0.0:9000 ,网上很多写127.0.0.1:9000也行,但是可能版本原因,我亲测弗成。
3. /etc/php-fpm.d/www.conf 配置文件,默认只许可本机IP,须要将 listen.allowed_clients = 127.0.0.1 改注释掉。
4. 短缺 /run/php-fpm 文件夹,无法启动php-fpm,无法创建PID文件,在容器中php-fpm启动报错:ERROR: Unable to create the PID file (/run/php-fpm/php-fpm.pid).: No such file or directory (2)ERROR: FPM initialization failed,需自己创建 mkdir /run/php-fpm 。

3):配置nginx的Dockerfile

由于也须要变动www用户,以是须要Dockerfile文件重修镜像。

有两种,可以自行根据自己需求配置。

1:第一种,可以直接nginx官方镜像,默认最新版本,在里面变动配置文件。

同时更新apt-get,和安装vi,以便后续在容器中大略编辑配置文件。
配置如下:

FROM nginxRUN groupadd -g 1002 www && useradd -u 1001 -g www -s /sbin/nologin www \&& apt-get -y update && apt-get -y install vi \&& sed -i 's/user nginx/user www/g' /etc/nginx/nginx.conf

2:第二种,直接从centos镜像安装nginx指定版本,构建新的nginx镜像。

这种无需安装vi等命令,已具备根本的命令可操作性强一点。
这里采取yum的安装办法。
配置如下:

FROM centosRUN groupadd -g 1002 www && useradd -u 1001 -g www -s /sbin/nologin www \&& yum install -y yum-utils \&& echo -e "[nginx-stable] \\nname=nginx stable repo \\nbaseurl=http://nginx.org/packages/centos/\$releasever/\$basearch \\ngpgcheck=1 \\nenabled=1 \\ngpgkey=https://nginx.org/keys/nginx_signing.key \\nmodule_hotfixes=true \\n[nginx-mainline] \\nname=nginx mainline repo \\nbaseurl=http://nginx.org/packages/mainline/centos/\$releasever/\$basearch \\ngpgcheck=1 \\nenabled=0 \\ngpgkey=https://nginx.org/keys/nginx_signing.key \\nmodule_hotfixes=true" > /etc/yum.repos.d/nginx.repo \&& yum install -y nginx-1.20.1 \&& sed -i 's/user nginx/user www/g' /etc/nginx/nginx.confCMD ["nginx", "-g", "daemon off;"]

需把稳的坑:

1. 同php一样,www用户和组,uid和gid须要和宿主机www用户同等。
2. 配置文件 /etc/nginx/nginx.conf 中更换用户时, user nginx 中间是两个空格,不是一个。

4):配置nginx的www.conf文件

在宿主机,创建的 nginx/conf.d 中配置 www.conf 文件,内容如下:

server {listen 80;server_name localhost;location / {root /usr/share/nginx/html;index index.html index.htm index.php;}error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}location ~ \.php$ {root /var/www/html;fastcgi_pass php_compose:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;include fastcgi_params;}}

需把稳的坑:

1. 路径问题, location ~ \.php$ 的root为php容器中的路径, location / 中的root为nginx容器中的路径,不能像装在同一机器下配置一样的路径,由于现在动静分离,须要考虑到对应容器是否存在这个默认路径,否则报404缺点。
2. fastcgi_pass 配置为 “容器名:端口” 办法。

5):配置yml文件

这里yml已命名为docker-compose.yml

vim docker-compose.yml

输入以下内容:

version: '3.8'services:nginx:build: ./nginxcontainer_name: nginx_composeports:- "80:80"- "443:443"volumes:- "$PWD/nginx/conf.d:/etc/nginx/conf.d"- "$PWD/www:/usr/share/nginx/html"depends_on:- "php"- "mysql"networks:- lnmpphp:build: ./phpcontainer_name: php_composevolumes:- "$PWD/www:/var/www/html"ports:- "9000:9000"networks:- lnmpmysql:image: mysql:5.7.34container_name: mysql_composeports:- "3306:3306"volumes:- "$PWD/mysql/conf.d/my.cnf:/etc/mysql/conf.d/mysql.cnf"networks:- lnmpcommand: --character-set-server=utf8environment:MYSQL_ROOT_PASSWORD: 123456MYSQL_DATABASE: wordpressMYSQL_USER: lnmpMYSQL_PASSWORD: lnmp123networks:lnmp:

干系参数解释:

version: '3':指的docker-compose 的版本,有1,2,3版本,对应docker版本,可参考:[https://docs.docker.com/compose/compose-file/compose-file-v3/](https://docs.docker.com/compose/compose-file/compose-file-v3/) services:指的安装哪些做事,lnmp做事 container_name:容器的名字,docker ps -a 中的 image:引入镜像,若是本地没有,就辞官网下载 networks:自定义网络,默认是桥接模式,可以用docker images ls 看 volumes:相称于bind这样的数据卷挂载,可以利用绝对或者相对路径 build:通过Dockerfile构建镜像 ports: 开放端口,比如3306:3306 ,那这样宿主机也可以连接管理 depends_on:依赖启动,先启动php,mysql,再启动nginx environment :mysql参数设置,这里例子为,设置root密码,创建wordpress数据库,创建user用户及密码。

6):创建测试网页

在www创建index.php页面,测试php和nginx是否连接成功:

vim www/index.php

内容:

<?phpphpinfo();?>

创建conn.php页面,测试php和mysql是否连接成功:

vim www/conn.php

内容:

<?php$servername = "mysql_compose";$username = "lnmp";$password = "lnmp123";try {$conn = new PDO("mysql:host=$servername;", $username, $password);echo "连接mysql成功";}catch(PDOException $e){echo $e->getMessage();}?>

7):启动docker-compose并测试

后台启动:

docker-compose up -d

查看状态为up成功:

docker-compose ps

打开浏览器分别输入自己的做事器地址如: 127.0.0.1/index.php 和 127.0.0.1/conn.php 地址连接测试,成功如下图所示:

配置成功完成!


四:dnmp百口桶安装包(扩展)

DNMP(Docker + Nginx/Openresty + MySQL5,8 + PHP5,7,8 + Redis + ElasticSearch + MongoDB + RabbitMQ)是一款全功能的LNMP一键安装程序,支持Arm CPU。

这套包含所有软件,根据自己选择须要的软件,配置docker-compose.yml和.env环境文件即可。

github地址:https://github.com/yeszao/dnmp

不用自己编写docker-compose.yml,方便试用。
上手随意马虎,测试环境,天生环境都可用。

标签:

相关文章

我国土地利用分类代码的构建与应用

土地利用分类代码是我国土地管理的重要组成部分,是土地资源调查、规划、利用和保护的依据。土地利用分类代码的构建与应用显得尤为重要。本...

SEO优化 2025-02-18 阅读1 评论0

微信跳转微信支付便捷支付体验的秘密武器

移动支付已成为人们日常生活中不可或缺的一部分。作为我国领先的社交平台,微信支付凭借其便捷、安全的支付方式,深受广大用户的喜爱。而微...

SEO优化 2025-02-18 阅读0 评论0

探寻会计科目代码背后的奥秘分类与

会计科目代码是会计信息系统中不可或缺的组成部分,它将企业的经济活动进行分类和归纳,为会计核算、财务分析和决策提供重要依据。本文将从...

SEO优化 2025-02-18 阅读1 评论0