一、前言
在真实生产环境中,web项目的部署,通常都是搭建在本机Linux系统中,对于docker容器中的项目部署几乎很少有用到,除非正式线上生产环境基于k8s去管理。那种的话,一般相对企业架构超大,项目环境在逐个管理起来比较麻烦,所以采用docker集群来做统一化管理。

那么今天来介绍下docker容器中进行web项目部署,以及服务搭建
常见的php、redis、nginx环境搭建。

二、docker搭建
1、部署服务镜像拉取。
这里用到的php服务版本为:5.6版本

docker pull nginx
docker pull redis
docker pull php:5.6-fpm

2、为了实现容器之间网络互通,可以先创建一个docker网络供于容器之间使用,使用docker来进行多个容器连接。

docker network create -d bridge web-net

3、启动redis容器。【redis不需要做映射。】

docker run --name redis-web【容器名称】 -d --network web-net【docker网络名称】 -p 6380:6379【宿主机端口:容器端口】 redis【镜像名称】

4、然后启动php容器
注意:因为是在本地进行开发,因此需要挂载主机的web目录到容器中来。
我这里的本地web目录为:/opt/data。
然后通过容器运行该web项目

docker run --name php-web -d --network web-net -p 9001:9000 -v /opt/data【宿主机中代码存放目录】:/data【容器中代码存放目录】  php:5.6-fpm

5、启动nginx容器

docker run --name nginx-web -d --network web-net -p 8081:80 -v /opt/data【宿主机中代码存放目录】:/data【容器中代码存放目录】  nginx

启动后,可通过 docker ps 来查询
显示如下:
在这里插入图片描述
容器启动成功
并且该3个容器是处于统一网络中,可通过ip互相访问。
6、启动成功后,然后就需要对nginx 以及php 进行相应的配置了

#1、首先进入nginx容器中,进行nginx配置
docker exec -it nginx-web bash
cd  /etc/nginx/conf.d
vim default.conf

如果你是第一次运行该容器,出现无法进行vim 编辑操作,可参考我这篇文章:
https://blog.csdn.net/xu710263124/article/details/119830761?spm=1001.2014.3001.5502

在default.conf中写入如下内容:

server{
    listen 80;
    server localhost;
    location / {
        root /data;  #对应主机挂载到nginx容器中的/data代码目录
        index index.php index.html index.htm;
    }
    location ~\.php(.*)$ {
        root /data;     #对应主机挂在到php容器中的/data代码目录
        fastcgi_pass 127.0.0.1:9000;   #此地址为php容器的内网ip
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /data$fastcgi_script_name;  
        fastcgi_param PATH_INFO $1;   #此行配置pathinfo,tp框架必须使用pathinfo
        include fastcgi_params;
    }
}

7、然后进行重载配置

# 注:这里不能使用systemctl
service nginx reload

8、然后进入php-web容器中,进行安装对应的扩展包之类

docker exec -it php-web bash
cd /usr/local/bin  
./docker-php-ext-install pdo_mysql  
./docker-php-ext-install mysql
docker-php-ext-install bcmath
docker-php-ext-install mbstring
apt-get update && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev
docker-php-ext-install -j$(nproc) iconv
docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
docker-php-ext-install -j$(nproc) gd
pecl install redis-4.0.1 && pecl install xdebug-2.6.0 && docker-php-ext-enable redis xdebug

可能需要安装5-10分钟左右。等待即可
结果如下:
在这里插入图片描述

9、安装完成后,重启php容器

docker restart php-web【php容器名称】

这样,简单的web项目就通过docker部署完成了。

:这里我没有安装mysql,因为安装同redis安装相同。在连接的时候注意使用他们的内网ip去连接。
如果想要连接宿主机,那么使用ifconfg命令找到docker0开头的那行,那个ip就是宿主机的ip,通过这个ip可以请求宿主机
假设我们在宿主机上已经有了mysql,那么可以使用ip:port来访问,容器之间也是使用内网ip来互相访问,进入每个容器然后cat /etc/hosts来获取ip。

OK~

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐