一、前言
在真实生产环境中,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~