戴文公司开发环境
-
可扩展 可支持扩展为任意的web类应用容器部署。
-
统一入口 基于nginx-proxy/nginx-proxy的镜像,自动生成配置。也可替换为trafik。 使用nginx-proxy的好处是,nginx广泛流行,配置成熟,方便扩展。trafik配置需要学习一套新的规则。
-
可复用 该方案即可做为本地开发环境,也可以作为线上部署使用。
-
安全性 选用的容器镜像经过相应的安全改进。
组件 | 文件 | 说明 | FQDN |
---|---|---|---|
proxy | proxy/docker-compose.yml | 基于nginx-proxy的镜像,可以自动基于容器的环境变量生成配置 | proxy |
proxy-https | proxy-https/docker-compose.yml | 基于nginx-proxy的镜像,可以自动基于容器的环境变量生成配置,支持ssl证书 | proxy |
mariadb | mariadb/docker-compose.yml | 基于mariadb:10.5镜像的数据库 | mariadb |
redis | redis/docker-compose.yml | 基于bitnam/redis:6.2镜像的redis>数据库 | redis |
elasticsearch | elasticsearch/docker-compose.yml | 基于davyinsa/elasticsearch镜像的数据库,含有IK分词插件 | es01 |
pma | pma/docker-compose.yml | 运行phpmyadmin/phpmyadmin镜像,方便数据库管理。连接数据库的主机名为mariadb | N/A |
db-backup | db-backup/docker-compose.yml | 基于tiredofit/mariadb-backup镜像的自动化数据库备份。 | N/A |
demo-app | demo-app/docker-compose.yml | 用作实例,作为drupal部署。可以使用其他的web类镜像。 | demo-app.docker |
- 创建docker网络
## 执行脚本
sh network.sh
## 也可以手动执行相关的命令
docker network create --driver=bridge --subnet=10.10.255.0/24 --ip-range=10.10.255.0/24 --gateway=10.10.255.254 proxy
- 启动公用容器(docker启动时候自动启动)
## 执行脚本
sh proxy.sh
## 也可以手动执行相关的命令
docker-compose -f proxy/docker-compose.yml -f mariadb/docker-compose.yml -f pma/docker-compose.yml up -d
- 项目配置(drupal)
## 执行shell脚本
sh quick-start.sh
## 也可以手动copy,然后修改相关配置
cp -r demo-app/docker-compose.yml demo-project/
cd demo-project
## 编辑配置,主要VIRTUAL_HOST环境变量,用来设置访问的域名
-
(可选) 如果本地配置自动的DNS解析,可以忽略。 如果没有配置,修改本机的hosts,将VIRTUAL_HOST中的域名指向本地IP(一般为127.0.0.1)
-
浏览器访问
## 一般是如下格式的IP
xx.docker.localhost
## e.g. dyniva.docker.localhost
进入proxy-https/certs目录下,将SSL证书放到这里,ssl证书必须以.key和.crt结尾。 例如域名是example.com,则证书名如下:
example.com.key
example.com.crt
注意,这里支持泛域名证书,例如域名是test.example.com,可以使用example.com的泛域名证书;泛域名证书的文件名不带"*."。例如*.example.com的泛域名证书文件名为:
example.com.key
example.com.crt
设置之后,所有的子域名(例如a.example.com,b.example.com,www.example.com)等会自动使用该泛域名证书。
nginx-proxy的镜像会自动生成基本的配置;在一些项目中会有一些特殊的需求,这样可以通过自定义配置实现,参考官方文档: per-VIRTUAL_HOST
Authentication Plugin - SHA-256
mysql8.0.4开始,默认的密码验证插件为caching_sha2_password,而这种验证方式mariadb是不支持的。 一些基于alpine的镜像,默认安装的mysql-client是mariadb提供的;以及站群镜像中为了规避一些潜在问题,也是使用mariadb提供的client。 mariadb client和mysql client都支持mysql_native_password 基于以上的理由,mysql8使用的默认密码插件为mysql_native_password