docker理解三(mysql和nginx和php互联)

本文介绍了如何在Docker环境下搭建LNMP(Linux, Nginx, MySQL, PHP)环境,并进行PHP连接MySQL的测试。首先讲解了PHP和Nginx的安装与配置,然后描述了MySQL的安装过程。最后通过代码展示了PHP如何读取数据库,提到了PHP容器中PDO插件的安装与MySQL8.0连接问题的解决方法。" 79553907,7418087,ThinkPHP3.2实战技巧总结,"['PHP', '框架', 'ThinkPHP', 'Web开发', '数据库操作']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

修炼docker越来越久就越是觉得docker方便和快捷。随着修炼的东西越来越多,所以最近想做个小的demo测试一下,顺便验证一些东西。
这个demo主要是实现一个简单的功能 执行php文件,插入多条记录入数据库,听起来是不是很简单,流程如下图:1

序言

  1. 一般来说,想要运行php基本离不开lnmp运行环境,即linux、nginx、 mysql、 和php;
  2. 环境要求,docker需要先安装好,linux我用的是Linux version 3.10.0-1127.13.1.el7.x86_64(这个不重要)
  3. 必须得连的上外网,ping www.baidu.com能ping通。

php安装

安装php

docker pull php-fpm:7.1
docker ps 
#生成容器  挂载 -v  [本机目录]:[容器目录]
docker run -p 9000:9000 --name  php_test-v /var/www:/var/www -d php:7.1-fpm
docker exec-it php_test bash #(测试一下能不能进去)

到这里 PHP就安装好了

nginx安装

1.安装搭建nginx

#直接拉最新的nginx,当然如果你喜欢其他版本也可以吧latest换成对应版本号就行
docker pull nginx:latest
#查看是否拉取到了本地
docker images
docker run -itd --name nginx_test  -p 80:80 nginx
docker ps #查看是否运行
#没有浏览器就用curl
curl localhost(会看到熟悉的nginx的html码)

看,nginx一下子就可以正常运行了,舒服啊。当然真正的不可能这么简单,我们要修改一些东西, 我们重新创建一个nginx容器

#有些人觉得第一个nginx好烦,又没有用,可以先删掉
docker stop nginx_test
docker rm nginx_test
#
#
#1.这里多挂载一个目录文件是用来放资源文件的。
#2. 还记得开始的php容器吗?我们连接上他,让他和nginx相互连接,用--link就可以解决
#3.记得提前先在本地创建一个default.conf文件,不需要什么内容。不然会报错找不到该文件

docker run --name nginx_test -p 80:80 -v /var/www:/var/www  -v /usr/local/nginx/conf/default.conf:/etc/nginx/default.conf -d:ro --link php_test   nginx

docker ps
docker exec -it nginx_test bash
#查看容器是否运行,进入容器查看是否运行成功。

到这里,nginx容器就算建立好了,接下来还有一个配置文件没有创建,创建default.conf

2.修改nginx的配置文件

#cd到本机的挂载目录上
cd /usr/local/nginx/conf/
#创建配置文件
touch default.conf
vim default.conf

default.conf文件

server {
   
    listen 80; #这个接口要对应你-p映射的接口80:80
    server_name localhost;
    root /var/www; #(这里需要修改为自己指定的资源目录,可以是第一个挂载点,也可以自定义)
    index index.html index.php;

    charset utf-8;

    location / {
   
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico {
    access_log off; log_not_found off; }
    location 
### Docker 容器间 IP 地址配置及网络互通设置 #### 创建自定义桥接网络 为了更好地控制容器间的通信,建议创建一个自定义的桥接网络而不是使用默认的`docker0`。通过这种方式能够更方便地管理容器连接到同一网络上。 ```bash docker network create --subnet=192.168.5.0/24 my_bridge_network ``` 此命令会创建一个新的名为 `my_bridge_network` 的桥接网络,并指定了子网范围为 `192.168.5.0/24`[^1]。 #### 启动带有静态IP地址的容器 当启动新的容器时,可以通过参数来指定该容器应该加入哪个特定的用户定义桥梁网络以及为其分配固定的内部IPv4地址: ```bash docker run -d \ --name some_container_name \ --network=my_bridge_network \ --ip=192.168.5.10 \ nginx ``` 上述指令表示将以守护进程模式运行Nginx服务端口映射至宿主机,并将其命名为 `some_container_name`, 加入之前建立好的 `my_bridge_network` 并赋予其固定内网IP `192.168.5.10`。 对于其他需要互联的服务也可以采用相同的方式部署,在同一个自定义网络内的所有容器都能够互相访问对方的服务而无需额外配置防火墙规则或端口转发等复杂操作[^3]。 #### 验证容器间的连通性 一旦多个容器被成功部署到了相同的自定义网络中,则可以直接利用它们各自的名称作为DNS解析目标来进行相互之间的HTTP请求或其他形式的数据交换测试: 假设已经按照上面的方法分别启动了一个Web服务器(nginx) 数据库(mysql),那么可以在任意一方执行如下curl命令验证两者能否正常通讯: ```bash # Inside the web server container (or any other connected containers) curl http://mysql:3306/ ``` 这里的`mysql`即代表了MySQL服务所在容器的名字,因为Docker Compose或者其他工具通常允许我们这样简单地引用同属一网络环境里的资源对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值