如何利用Docker Compose开启nginx
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,如何利用Docker Compose开启nginx?相信大部分人都还没学会这个技能,为了让大家学会,给大家总结了以下内容,话不多说,一起往下看吧。Docker Compose配置常用字段build d
千家信息网最后更新 2025年12月02日如何利用Docker Compose开启nginx
如何利用Docker Compose开启nginx?相信大部分人都还没学会这个技能,为了让大家学会,给大家总结了以下内容,话不多说,一起往下看吧。
Docker Compose配置常用字段
build dockerfile context 指定Dockerfile文件名构建镜像上下文路径image 指定镜像command 执行命令,覆盖默认命令container name 指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scaledeploy 指定部署和运行服务相关配置,只能在swarm模式使用environment 添加环境变量networks 加入网络ports 暴露容器端口,但端口不能低于60volumes 挂载宿主机或命令卷,像数据卷一样restart 重启策略hostname 容器主机名Docer Compose常用命令
build 重新构建服务ps 列出容器up 创建和启动容器exec 在容器里面执行命令scale 指定一个服务容器启动数量top 显示容器进程logs 查看容器输出down 删除容器,网络,数据卷和镜像stop/start/restart 停止/启动/重启服务Compose 命令说明
docker-compose选项--verbose 输出更多调试信息--version 打印版本并退出-f,--file 使用特定的compose模板文件,默认为docker-compose.yml-p,指定项目名称,默认使用目录名称Consul
Consul是HashCorp公司推出得到开源工具,用于实现分布式系统的服务与配置Consul的特性Consul支持健康检查,允许存储键值对一致性协议采用Raft算法,用来保证服务的高可用成员管理和消息广播采用GOSSIP协议,支持ACL访问控制列表,与docker无缝配合构建自动发现的Docker服务架构
建立Consul服务
每个提供服务的节点上都要部署Consul的agentConsul agent有两种运行模式ServerClientServer和Client只是Conusl集群层面的区分,与搭建在Cluster之上的应用服务无关consul群集架构,发现注册nginx中的docker容器,监控节点服务器的状态。
consul server服务器中的nginx做反向代理去轮询访问服务器池中的一个个容器。用户访问代理端口,就能访问到后面的多个容器,我们的端口做了两次映射。consul服务器上可以统一修改配置文件
-----------------------------------------------------docker-compose容器编排----------------------------------------------------------------
#宿主机的共享目录有nginx软件包,我们挂载到/opt/目录下mount.cifs //192.168.100.25/LNMP /opt/#创建容器编排目录mkdir /root/compose_ngin#创建nginx容器镜像cd compose_nginx/mkdir nginxcd nginx/cd /opt/cp nginx-1.12.0.tar.gz /root/compose_nginx/nginx/cd /root/compose_nginx/nginx/#加上nginx启动脚本vim run.sh #!/bin/bash/usr/local/nginx/sbin/nginx[root@localhost nginx]# vim DockerfileFROM centos:7MAINTAINER this is nginx RUN yum -y updateRUN yum -y install wget pcre-devel zlib-devel make zlib gcc gcc-c++ openssl-devel net-toolsRUN useradd -M -s /sbin/nologin nginxADD nginx-1.12.0.tar.gz /usr/local/srcWORKDIR /usr/local/srcWORKDIR nginx-1.12.0RUN ./configure \--prefix=/usr/local/nginx \--user=nginx \--group=nginx \--with-http_stub_status_module && make && make installENV PATH /usr/local/nginx/sbin:$PATHEXPOSE 80EXPOSE 443RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.confWORKDIR /root/nginxADD run.sh /run.shRUN chmod 755 /run.shCMD ["/run.sh"] 编写docker-compose编排安装nginx
[root@localhost compose_nginx]# vim docker-compose.ymlversion: '3'services: nginx: hostname: nginx build: context: ./nginx dockerfile: Dockerfile ports: - 1216:80 - 1217:443 networks: - chen volumes: - ./wwwroot:/usr/local/nginx/htmlnetworks: chen:[root@localhost compose_nginx]# mount.cifs //192.168.100.25/compose /mnt/Password for root@//192.168.100.25/compose: [root@localhost compose_nginx]# cd /mnt/[root@localhost mnt]# lsconsul_0.9.2_linux_amd64.zip consul-template_0.19.3_linux_amd64.zip docker-compose[root@localhost mnt]# cp -p docker-compose /usr/local/bin/[root@localhost mnt]# chmod +x /usr/local/bin/docker-compose #开启路由转发[root@localhost compose_nginx]# vim /etc/sysctl.confnet.ipv4.ip_forward=1[root@localhost compose_nginx]# sysctl -pnet.ipv4.ip_forward = 1利用编排工具开启nginx
[root@localhost compose_nginx]# docker-compose -f docker-compose.yml up -d[root@localhost compose_nginx]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES66d7cee5692d compose_nginx_nginx "/run.sh" 11 seconds ago Up 9 seconds 0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp compose_nginx_nginx_1我们做了数据卷我们写个默认首页进去
[root@localhost compose_nginx]# lsdocker-compose.yml nginx wwwroot[root@localhost compose_nginx]# cd wwwroot/[root@localhost wwwroot]# vim index.htmlthis is chen web ! ! !

-------------------------------------------------------------------consul部署----------------------------------------------------------------------
自动发现注册多个docker容器节点,要想被consul管理,就要去注册,满足搜索条件agent就会提交注册请求,consul server自动发现去处理注册请求,监控容器的状态,template模板
[root@localhost ~]# mkdir consul[root@localhost ~]# cd /mnt/[root@localhost mnt]# lsconsul_0.9.2_linux_amd64.zip consul-template_0.19.3_linux_amd64.zip docker-compose[root@localhost mnt]# cp consul_0.9.2_linux_amd64.zip /root/consul/[root@localhost mnt]# cd /root/consul/[root@localhost consul]# lsconsul_0.9.2_linux_amd64.zip[root@localhost consul]# unzip consul_0.9.2_linux_amd64.zip Archive: consul_0.9.2_linux_amd64.zip inflating: consul [root@localhost consul]# mv consul /usr/bin/#使用conusl agent代理功能[root@localhost consul]# consul agent \#指定server功能#参与领袖#ui界面#参数指定位置#绑定本地地址#面对所有节点#本地节点名称混合输出到日志中,放在后台运行> -server \> -bootstrap \> -ui \> -data-dir=/var/lib/consul-data \> -bind=192.168.136.142 \> -client=0.0.0.0 \> -node=consul-server01 &> /var/log/consul.log &[1] 37957#查看群集信息[root@localhost consul]# consul membersNode Address Status Type Build Protocol DCconsul-server01 192.168.136.142:8301 alive server 0.9.2 2 dc1#现在只有一台,它就是老大[root@localhost consul]# consul info | grep leader leader = true leader_addr = 192.168.136.142:8300第二台节点服务器(创建多个容器)容器服务自动加入nginx集群
[root@localhost ~]# docker run -d \> --name=registrator \ #指定容器名称> --net=host \ #指定主机> -v /var/run/docker.sock:/tmp/docker.sock \ #指定数据卷宿主机目录,容器目录> --restart=always \ #重启> gliderlabs/registrator:latest \ #指定本地的镜像> -ip=192.168.136.167 \ #指定你本地的地址> consul://192.168.136.142:8500 #指定consul的地址#两个nginx服务容器[root@localhost ~]# docker run -itd -p:83:80 --name test-01 -h test01 nginxroot@localhost ~]# docker run -itd -p:84:80 --name test-02 -h test02 nginx#两个apache服务5容器[root@localhost ~]# docker run -itd -p:88:80 --name test-03 -h test02 httpd[root@localhost ~]# docker run -itd -p:89:80 --name test-04 -h test04 httpd#查看所有容器[root@localhost ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES00a94fe6fd0c httpd "httpd-foreground" 6 seconds ago Up 5 seconds 0.0.0.0:89->80/tcp test-04b47b89287e43 httpd "httpd-foreground" 38 seconds ago Up 37 seconds 0.0.0.0:88->80/tcp test-039b695e1d8660 nginx "nginx -g 'daemon of…" About a minute ago Up About a minute 0.0.0.0:84->80/tcp test-023cbf17118dab nginx "nginx -g 'daemon of…" 2 minutes ago Up 2 minutes 0.0.0.0:83->80/tcp test-01055caf398060 gliderlabs/registrator:latest "/bin/registrator -i…" 3 minutes ago Up 3 minutes registrator验证http和nginx服务是否注册到consul
consul服务器
Consul-Templatee 是一个守护进程,用于实时查询Consul集群信息,并更新文件系统上任意数量的指定模板,生成配置文件。更新完成以后,可以选择运行shell命令执行更新操作,重新加载nginx,Consul-template可以查询Consul中的服务目录,key,key-values等这种强大的抽象功能和查询语言模板可以使Consul-template特别适合动态的创建配置文件[root@localhost ~]# cd /root/[root@localhost ~]# lsanaconda-ks.cfg compose_nginx initial-setup-ks.cfg 公共 文档 模板 音乐chen consul 下载 图片 桌面 视频[root@localhost ~]# cd consul/[root@localhost consul]# lsconsul_0.9.2_linux_amd64.zip[root@localhost consul]# #准备temlate nginx 模板文件[root@localhost consul]# vim nginx.ctmplupstream http_backend { {{range service "nginx"}} server {{.Address}}:{{.port}}; {{end}}}server { listen 1216; server_name localhost 192.168.136.167; access_log /var/log/nginx/kgc.cn-access.log; index index.html index.php; location / { proxy_set_header HOST $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Client-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://http_backend; }}#安装nginx[root@localhost nginx-1.12.0]# yum install gcc gcc-c++ pcre-devel zlib-devel -y[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx[root@localhost nginx-1.12.0]# make && make install[root@localhost nginx-1.12.0]# vim /usr/local/nginx/conf/nginx.conf#nginx中有events,http,if,location,字段 19 include vhost/*.conf;[root@localhost nginx-1.12.0]# cd /usr/local/nginx/conf/[root@localhost conf]# mkdir vhost[root@localhost consul]# cd /var/log/[root@localhost log]# mkdir /var/log/nginx[root@localhost log]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/[root@localhost log]# nginx[root@localhost log]# netstat -ntap | grep nginxtcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 107612/nginx: ma[root@localhost opt]# cd /mnt/[root@localhost mnt]# cp consul-template_0.19.3_linux_amd64.zip /root/[root@localhost mnt]# cd /root/[root@localhost ~]# unzip consul-template_0.19.3_linux_amd64.zip [root@localhost ~]# mv consul-template /usr/bin/#启用模板[root@localhost ~]# consul-template -consul-addr 192.168.136.142:8500 \> -template "/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/kgc.conf:/usr/local/nginx/sbin/nginx -s reload" \> --log-level=info#coul服务器处于监控状态,我们再开一台终端同一台服务器的#验证
#增加一个nginx容器节点增加一个nginx容器节点,测试服务发现及配置更新功能//在registrator服务端注册dockers run -itd -p:85:80 --name test-05 -h test05 nginxdocker logs -f test-01docker logs -f test-02docker logs -f test-05以上就是用Docker Compose开启nginx的方法介绍,详细使用情况还得要大家自己使用过才能知道具体要领。如果想阅读更多相关内容的文章,欢迎关注行业资讯频道!
容器
服务
服务器
节点
名称
命令
文件
模板
目录
配置
镜像
功能
数据
端口
更新
运行
信息
地址
多个
宿主
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
富民方便软件开发价格信息
服务器配置安全设置
数据库工程师笔试题
腾讯云服务器怎么在桌面
vm 视频管理服务器
部队网络安全问题自查
团日活动板报网络安全为人民
数据库 表和视图
网络安全的宣传片的形象
玉田项目网络技术售后保障
php写入数据库一条记录
华为服务器未来发展前景
江苏专业软件开发价格大全
怎么显示数据库密码是什么
怎么简单进入网站数据库
海西州网络技术发展
一个事务中对数据库
个股金融软件开发公司
合肥科技互联网公司
大型分布式游戏服务器
数据库中的年龄是什么类型
南坪租房软件开发
mui与服务器交互
综艺网络安全人员
武研所的软件开发加班严重吗
互联网科技公司发展趋势
ipad邮箱服务器
交通银行软件开发岗面试
一个事务中对数据库
大型分布式游戏服务器