ci框架 反向代理配置_docker-compose配置Nginx反向代理禅道

本次项目会用到3个镜像分别是nginx、mysql 和禅道,以后若迁移服务器环境则只需下载这3个镜像即可

mysql与禅道镜像下载与构建参考:mysql   禅道

目录介绍

cloud # 文件名

+----init # mysql初始化配置目录,挂载到容器

| +----init.sql # mysql初始化脚本,挂载到容器

+----mysql_db # mysql的挂载目录,挂载到容器

| +----mysqld.cnf # mysql的配置文件,挂载到容器

+----nginx

+----conf.d # nginx服务配置目录,挂载到容器

+----default.conf # nginx服务配置文件,挂载到容器

+----log

+----host.access.log # nginx日志文件,挂载到容器

+----html

+----50x.html # nginx报错50X返回页面

+----zentao # 禅道挂载目录,挂载到容器

+----.env # docker-compose环境变量配置文件

+----docker-compose.yml # docker-compose的运行文件

配置

环境变量 — .env文件

# mysql信息配置

MYSQL_IMAGE=mysql:5.7

MYSQL_ROOT_PASSWORD=password

MYSQL_IP=192.110.0.2

# 禅道信息配置

ZENTAO_IMAGE=zentao:latest

ZENTAO_IP_BACKEND=192.110.0.10

ZENTAO_IP_FRONTEND=182.120.0.3

# nginx信息配置

NGINX_IMAGE=nginx:mainline-alpine-perl

NGINX_IP=182.20.0.2

# network信息配置

BACKEND_SUBNET=192.110.0.0/16

FRONTEND_SUBNET=182.120.0.0/16

docker-compose.yml

version: '3.1'

services:

mysql:

image: ${MYSQL_IMAGE} # mysql镜像

container_name: "mysql_5.7" # 容器名称

volumes:

- ./mysql_db/mysqld.cnf:/etc/mysql/mysql.conf.d/ # 挂载mysql配置文件

- ./mysql_db/datadir:/var/lib/mysql/ # 挂载mysql数据文件

restart: always # 开机启动

environment:

- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} # 设置ROOT账号密码

ports:

- "3306:3306"

networks:

my_backend: # 加入网络-my_backend

ipv4_address: ${MYSQL_IP} # 指定的IP地址

zentao:

image: ${ZENTAO_IMAGE} # 禅道镜像

container_name: "zentao_latest" # 容器名称

volumes:

- ./zentao/zentaopms:/app/zentaopms # 挂载禅道源码路径

- ./zentao/mysql:/var/lib/mysql # 禅道自带的mysql挂载到本机

restart: always # 开机启动

environment:

- MYSQL_ROOT_PASSWORD=password # 禅道镜像mysql的root账号密码

ports:

- "80:8010" # 容器80端口映射宿主机8010端口

networks:

my_backend: # 加入网络-my_backend

ipv4_address: ${ZENTAO_IP_BACKEND} # 指定IP地址

my_frontend: # 加入网络-my_frontend

ipv4_address: ${ZENTAO_IP_FRONTEND} # 指定的IP地址

nginx:

image: ${NGINX_IMAGE} # nginx镜像

container_name: "nginx_latest" # 容器名称

volumes:

- ./nginx/conf.d:/etc/nginx/conf.d # 挂载nginx配置文件

- ./nginx/log/host.access.log:/var/log/nginx/host.access.log # 挂载nginx日志文件

- ./nginx/html:/usr/share/nginx/html # 挂载nginx首页

restart: always # 开机启动

ports:

- "80:80" # 容器80端口映射宿主机80端口

- "443:443" # 容器443端口映射宿主机443端口

networks:

my_frontend: # 加入网络-my_frontend

ipv4_address: ${NGINX_IP} # 指定的IP地址

networks:

my_backend: # 自定义网络-my_backend

driver: bridge # 定义的网络模式

ipam:

config:

- subnet: ${BACKEND_SUBNET} # 定义网段

my_frontend: # 自定义网络-my_frontend

driver: bridge # 定义的网络模式

ipam:

config:

- subnet: ${FRONTEND_SUBNET} # 定义网段

mysql配置文件mysqld.cnf

[mysqld]

explicit_defaults_for_timestamp=true

character-set-server=utf8

collation-server=utf8_unicode_ci

init_connect='SET NAMES utf8;'

max_allowed_packet=10M

wait_timeout=288000

interactive_timeout = 288000

sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

skip-name-resolve

pid-file= /var/run/mysqld/mysqld.pid

socket= /var/run/mysqld/mysqld.sock

datadir= /var/lib/mysql/

symbolic-links=0

mysql测试脚本init.sql

create database test;

use test;

create table user

(

id int auto_increment primary key,

username varchar(64) unique not null,

email varchar(120) unique not null,

password_hash varchar(128) not null,

avatar varchar(128) not null

);

insert into user values(1, "zhangsan","1111@qq.com","passwd","password");

insert into user values(2, "lisi","22222222@qq.com","passwd","password");

insert into user values(3, "wangwu","333333@qq.com","passwd","password");

nginx配置文件default.conf

server {

listen 80;

server_name localhost;

# 日志

access_log /var/log/nginx/host.access.log main;

error_page 500 502 503 504 /50x.html;

# 50X报错页面

location = /50x.html {

root /usr/share/nginx/html;

}

# 反向代理禅道配置

location / {

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header Host $http_host;

proxy_pass http://182.120.0.3;

}

}

部署

sudo docker-compose up -d

# 以守护进程模式(-d)运行

查看网络

docker network ls

docker新增了两个网络定义的网络 — filename_my_backend 和 filename_my_frontend,如图:

查看容器的运行情况

docker ps -a

容器启动运行成功,如图:

客户端浏览器通过80端口访问禅道成功,反向代理配置ok

不积跬步无以至千里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值