Docker简单集成php开发环境

本文详细介绍了如何使用Docker容器化Nginx和PHP环境,包括镜像拉取、容器启动、端口映射、配置文件挂载及容器间链接等关键步骤,实现快速部署和高效运维。

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

安装Docker

在官方网站直接下载符合你操作系统的版本,安装即可。由于国内的网络下载Docker镜像实在是太慢,我们不妨使用国内的加速服务,教程可以参见:https://yeasy.gitbooks.io/docker_practice/content/install/mirror.html

Nginx

首先,我们先拉取一个Nginx镜像,很简单:

docker pull nginx

使用docker images查看一下我们刚刚拉取下来的镜像
实例化该镜像,我们把实例化的镜像称之为容器,镜像和容器的关系就好比类和实例的关系。

//-p 是指定本机端口到容器端口
//其中8080是指主机的端口,而80是指容器的端口
docker run -p 80:8080 nginx
//具体细节可输入docker run --help查询

我们先看一下端口的状态

netstat -na|grep 8080

或者通过 docker port name 查看端口信息

Nginx容器启动之后,访问localhost,熟悉的欢迎页面出现了吧,不用我们下载,编译,安装,直接实例化然后启动就好了,多么让人幸福的一件事。

浏览器访问

在这里插入图片描述
切回命终端,发现终端打印出了一堆log信息,我可不想整天盯着这些无趣的信息看,让Nginx进入守护运行吧。

docker run -p 80:8080 --name cool_nginx -d nginx
//-p是端口参数,给上-d参数表示容器是守护程序会进入后台运行,--name则是重新给容器命名。成功之后,用docker ps来查看当前已经启动的容器。

现在我们进入这个容器,并修改这个Nginx默认网页。

//frosty_bose 为容器名称 可通过docker ps 查询
docker exec -it frosty_bose bash
echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html

挂载一个本地目录到容器,就不用每次都进入到容器中修改代码了,当然的将E:\project\maibuapi\public替换成你自己的文件目录。

 docker run -p 8080:80  -v E:\project\maibuapi\public:/usr/share/nginx/html/ -d nginx

PHP

docker pull php:7.2-fpm

使用7.2版本的PHP,你可以选择其他版本的PHP。

 docker run --name liang_php  -v E:\project\Docker\test:/usr/share/nginx/html/ -d php:7.2-fpm 

使用docker ps可以看到,Nginx和FPM都已经启动了。
那么PHP如何和Nginx链接起来呢?很简单,Docker为我们做好了一切,只需要一个参数就可以将两个容器链接起来。

--link cool_php_fpm
我们都知道,Nginx默认是不解析PHP文件的,所以还需要修改一下配置,不需要进入Nginx容器里去修改,我们在当前文件夹下,新建一个default_nginx.conf文件,写入如下内容:

server {
    listen 80;
    server_name localhost;
    root /usr/share/nginx/html;
    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 = /robots.txt  { access_log off; log_not_found off; }

    access_log off;
    error_log  /var/log/nginx/error.log error;

    sendfile off;

    client_max_body_size 100m;

    location ~ \.php?$ {
        fastcgi_pass liang_php:9000;
        #和别名保持统一
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
    }

    location ~ /\.ht {
        deny all;
    }
}

然后用docker rm nginx命令删除掉原先的Nginx容器,挂载该配置文件重新实例化:

docker run -p 8080:80 --name liang_nginx -d -v E:\project\Docker\test:/usr/share/nginx/html/ -v E:\project\Docker\test\default_nginx.conf:/etc/nginx/conf.d/default.conf:ro --link liang_phpnginx

创建php文件

<?php
echo  phpinfo();

在这里插入图片描述

mysql

//默认为8版本会出现密码问题
docker pull mysql

然后启动:

docker run -d --name liang_mysql -e MYSQL_ROOT_PASSWORD=123456 mysql

-e参数是给给定环境变量,这里我们设定MySQL的密码是123456
链接到MySQL容器:docker exec -it liang_mysqlbash
登陆MySQL:mysql -uroot -p123456
PHP如何链接到MySQL,相信你也知道了,对的还是使用–link参数,我们删除掉colphp容器,重新构建
docker run --name colphp --link coolmysql -v E:\project\Docker\test:/usr/share/nginx/html/ -d php:7.2-fpm
链接之后,PHP容器和MySQL容器能够通信了,但是还是不够呢(坚持一下,最后一步了),初始PHP是没有安装MySQL扩展的,安装扩张也极其容易,先进入到PHP容器:docker exec -it colphp bash
然后用docker-php-ext-install命令安装:docker-php-ext-install mysqli exit
ok,我们重启PHP容器:docker restart colphp

docker-compose

还在研究中。。。。。。github地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值