Skip to content

开箱即用的面向生产和开发环境的 Docker 配置 - Docker configuration for production and development environments

License

Notifications You must be signed in to change notification settings

sohaha/zls-docker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

937905b · Sep 7, 2024
Sep 7, 2024
Dec 31, 2020
Jan 18, 2022
Aug 13, 2020
Aug 1, 2019
Jul 25, 2023
Aug 1, 2019
Jul 18, 2022
Aug 1, 2019
Dec 1, 2022
Dec 1, 2022
Feb 18, 2020
Aug 28, 2024
Oct 30, 2021

Repository files navigation

zls-docker

开箱即用的面向生产和开发环境的 Docker 镜像

详细文档

目录结构

.
├── config
│   ├── mysql
│   │   └── mysql.cnf                      mysql.cnf 配置
│   ├── caddy                              caddy 配置目录
│   ├── nginx
│   │   ├── conf.d                         vhost 配置目录
│   │   │   ├── localhost.conf             默认站点配置
│   │   │   └── localhost_https.conf       默认站点HTTPS配置
│   │   └── nginx.conf                     nginx.conf 配置
│   ├── php
│   │   ├── php-fpm.conf                   php-fpm.conf 配置
│   │   └── php.ini                        php.ini 配置
│   ├── redis
│   │   └── redis.conf                     redis.conf 配置
│   ├── lua                                lua 脚本
│   │   └── waf
│   │       └── config.lua                 web 防火墙配置
├── data                                   数据目录
├── logs                                   日志目录
├── docker-compose.yml                     docker-compose 编排文件
├── run.sh                                 执行脚本
└── www                                    站点目录
    └── localhost                          默认站点

快速上手

  1. 安装 git、 docker 和 docker-compose

docker >=19

docker-compose >= 3

系统自带的 yum、apt 安装版本可能会过低了,

如不清楚如果不熟悉怎么安装 docker,

执行可以拉取项目后执行 ./run.sh installDocker 查看相关安装命令,

或查看 docker.md 参考安装步骤。

  1. 拉取项目
git clone --depth=1 https://github.com/sohaha/zls-docker.git
  1. 启动

默认配置使用 nginx 与 caddy 只能启动其中一个。

# 更多命令直接执行 run.sh 查看
./run.sh up

# Windows 请先复制配置再执行启动命令
copy .env.example .env
copy docker-compose.yml.example docker-compose.yml
docker-compose up -d nginx mysql php
  1. 访问在浏览器中访问 http://localhost/

配置设置

更多配置请打开 .env 文件查看。

PHP 使用

安装扩展

# 编辑.env文件,
# 从扩展列表 PHP extensions 中选择相应的扩展,
# 添加(移除)到 PHP_EXTENSIONS 中,英文逗号隔开
PHP_EXTENSIONS=swoole,redis

# 重新编译 PHP 镜像并启动
./run.sh buildUp php

# Windows 请执行 docker-compose build php && docker-compose up php -d

定时任务

有些时候需要配置定时任务做一些特定业务处理,但是直接在容器内是不支持的,不过我们可以直接在宿主机上设置。

!> 请确定 crontab 下 docker-compose 能正常使用,如果不能请尝试执行 sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose 再试。

# 假设本脚本放在 /root/zls-docker 目录下
# 需要每分钟执行一次 www/test/task.php

# crontab -e
# 下面语句就是每分钟进入 php 容器 执行 `php test/task.php`
* * * * * /root/zls-docker/run.sh cron php php test/task.php

数据库使用

  • 在其它容器需要连接数据库 HOST 直接填容器名,如使用 MySQL: mysql 即可(或 172.0.0.20)。

  • 如需修改默认密码,编辑.env 文件即可,

    MySQL:MYSQL_ROOT_PASSWORD=73zls666

    mongo:MONGODB_INITDB_ROOT_PASSWORD=73zls666

    必须在容器生成之前,如果容器已经生成过,

    请使用 bash 进入容器内修改,具体方法请谷歌。

  • Msqyl 建立新数据库直接执行: zdc mysql 然后选 3( Create Databases )即可。


日常使用

安装脚本

建议把脚本命令安装至系统中,方便使用

./run.sh tools
# 输入1,自动安装至系统,然后就可以全局使用 zdocker

zdocker help

命令行

如要使用 composer,启动 swoole ,或 npm 安装等等。

./run.sh composer install zls/wechat
./run.sh php test.php
./run.sh npm install zls-ui
./run.sh go build
...

重新加载

nginx,php-fpm 之类的修改了配置是需要重新加载的,可使用该命令

# 不值得容器默认为nginx,下面命令等同 ./run.sh reload nginx
./run.sh reload

./run.sh reload php

进入容器

# ./run.sh bash 容器名称,如ph
./run.sh bash php

停止容器

# ./run.sh stop 容器名称(空表示停止全部)
./run.sh stop nginx

辅助操作

一些常用的操作,如 php-fpm 优化,清理没用使用的容器等等

./run.sh tools

HTTPS 证书

首次使用

# 如果首次执行失败,建议先把签证服务修改为 letsencrypt
~/.acme.sh/acme.sh --set-default-ca --server letsencrypt
# ./run.sh ssl -d 要签名的域名 -w 服务器里项目访问路径
./run.sh ssl -d mydomain.com -w /home/zdocker/www/mydomain.com/public

# 证书生成成功会自动拷贝一份到 /config/nginx/conf.d/certs/mydomain.com/ 目录
# https 的配置可以参考 config/nginx/conf.d/localhost_https.conf

更多问题

数据库安全

默认情况数据库是禁止外部连接的,如果需要开启请修改 .env 中的 MySQL 配置, 把 MYSQL_HOST_PORT=127.0.0.1:3306 改成 MYSQL_HOST_PORT=3306

# 为了安全性建议把 %.root 的密码修改成其他密码(默认密码:73zls666)
ALTER USER `root`@`%` IDENTIFIED BY 'xxx1990hi',`root`@`%` PASSWORD EXPIRE NEVER;

数据库备份 建议设置定时任务,定时备份数据库,如下:

# 假设本脚本放在 /root/zls-docker 目录下
# crontab -e

# 每天凌晨三点备份 MySQL 数据库
00 03 * * * /root/zls-docker/run.sh mysql backup

# 每天凌晨三点备份 MongoDB 数据库
00 03 * * * /root/zls-docker/run.sh mongodb backup

MongoDB 启动失败

/data/db/WiredTiger.wt: handle-open: open: Operation not permitted

原因: Windows 下不支持映射目录

解决方案: 注释掉 docker-compose.yml 文件内的 mongodb 映射配置,

# - ${MONGODB_DATA_DIR}:/data/db:rw

Swoole 版本

默认情况安装的是最新版的 Swoole, 如果需要指定版本直接修改安装脚本 config/php/extensions/php.sh

启动失败

查看 logs 目录,参考日志信息处理。

安装 sentry

首次启动之后需要初始化数据库,然后访问 http://127.0.0.1:9000

# 首次启动一定一定要修改 SENTRY_SECRET_KEY ,下面这条命令可以动态生成一个 SECRET_KEY
# docker run --rm sentry config generate-secret-key
# 初始化数据库,过程需要填写邮箱与密码
zdc bash sentry sentry upgrade

安装 YAPI

# 先启动 mongodb
./run.sh up mongodb

# 进入 mogodb 内 建立 Yapi 账号
./run.sh bash mongodb
# 进入 mongo 数据库
mongo -u root -p 73zls666
# 进入 Yapi 库
use yapi
# 添加一个用户 然后 Ctrl+c退出数据库 exit 退出容器
db.createUser({user: "yapi",pwd: "73zls666",roles: [{role: "dbOwner",db: "yapi"}]})
# 默认账号密码 admin@admin.com ymfe.org
# 启动 yapi (上面步骤只要执行一次)
./run.sh up yapi

安装监控服务

默认包含 grafana、prometheus、mysqlexporter。

注意: 如果你是 Root 用户启动,首次启动之前需要先给数据目录写入权限

chmod 777 ./data/grafana
chmod 777 ./data/prometheus

启动命令: zdc up grafana,

然后访问 http://127.0.0.1:3010/ ( 默认账号 admin/admin666 )。

配置 MySQL dashboard:

首先添加 Data Sources 选 Prometheus ,

URL填: http://prometheus:9090 ,其他的默认保存即可,

然后复制 config/grafana/mysql-dashboard.json 内容,贴贴到 ‘Import via panel json’ 创建完成。

如需监控服务器性能:

需手动启动(需要 docker root 权限) zdc up nodeexporter,再 Import via grafana.com 编码 8919。

About

开箱即用的面向生产和开发环境的 Docker 配置 - Docker configuration for production and development environments

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published