Skip to content
/ dgm Public

DGM(Docker + Go + MySQL + Redis)一键生成golang常用环境

License

Notifications You must be signed in to change notification settings

a67793581/dgm

Repository files navigation

DGM(Docker + Go + MySQL + Redis)一键生成golang常用环境

使用前最好提前阅读一遍目录,以便快速上手,遇到问题也能及时排除。

[GitHub地址] DGM项目特点:

  1. 100%开源
  2. 100%遵循Docker标准
  3. 所有镜像源于Docker官方仓库,安全可靠
  4. 一次配置,Windows、Linux、MacOs皆可用

目录

1.目录结构

/
├── data                        数据库数据目录
│   ├── mysql                   MySQL8 数据目录
├── services                    服务构建文件和配置文件目录
│   ├── mysql                   MySQL 配置文件目录
│   ├── go                     golang 配置目录
│   └── redis                   Redis 配置目录
├── logs                        日志目录
├── docker-compose.sample.yml   Docker 服务配置示例文件
├── env.smaple                  环境配置示例文件
└── code                        代码目录

2.快速使用

  1. 本地安装
    • git
    • Docker(系统需为Linux,Windows 10 Build 15063+,或MacOS 10.12+,且必须要64位)
    • docker-compose 1.7.0+
  2. clone项目:
    $ git clone https://github.com/a67793581/dgm.git
    
  3. 如果不是root用户,还需将当前用户加入docker用户组:
    $ sudo gpasswd -a ${USER} docker
    
  4. 拷贝并命名配置文件(Windows系统请用copy命令),启动:
    $ cd dnmp                                           # 进入项目目录
    $ cp env.sample .env                                # 复制环境变量文件
    $ cp docker-compose.sample.yml docker-compose.yml   # 复制 docker-compose 配置文件。
                                                        # 默认启动3个服务:golang、redis、MySQL。
    

3.管理命令

3.1 服务器启动和构建命令

如需管理服务,请在命令后面加上服务器名称,例如:

$ docker-compose up                         # 创建并且启动所有容器
$ docker-compose up -d                      # 创建并且后台运行方式启动所有容器
$ docker-compose up redis go mysql         # 创建并且启动多个容器
$ docker-compose up -d redis go mysql     # 创建并且已后台运行的方式启动容器


$ docker-compose start mysql                  # 启动服务
$ docker-compose stop mysql                   # 停止服务
$ docker-compose restart mysql                # 重启服务
$ docker-compose build mysql                  # 构建或者重新构建服务

$ docker-compose rm mysql                     # 删除并且停止php容器
$ docker-compose down                       # 停止并删除容器,网络,图像和挂载卷

3.2 查看docker网络

ifconfig docker0

用于填写extra_hosts容器访问宿主机的hosts地址

4.使用log

Log文件生成的位置依赖于conf下各log配置的值。

4.1 MySQL日志

因为MySQL容器中的MySQL使用的是mysql用户启动,它无法自行在/var/log下的增加日志文件。所以,我们把MySQL的日志放在与data一样的目录,即项目的mysql目录下,对应容器中的/var/lib/mysql/目录。

slow-query-log-file     = /var/lib/mysql/mysql.slow.log
log-error               = /var/lib/mysql/mysql.error.log

以上是mysql.conf中的日志文件的配置。

5.常见问题

5.1 Docker容器时间

容器时间在.env文件中配置TZ变量,所有支持的时区请看时区列表·维基百科或者PHP所支持的时区列表·PHP官网

5.2 Docker使用cron定时任务

Docker使用cron定时任务

5.3 如何连接MySQL和Redis服务器

这要分两种情况,

第一种情况,在代码中。 容器与容器是expose端口联通的,而且在同一个networks下,所以连接的host参数直接用容器名称,port参数就是容器内部的端口。更多请参考《docker-compose ports和expose的区别》

第二种情况,在主机中通过命令行或者Navicat等工具连接。主机要连接mysql和redis的话,要求容器必须经过ports把端口映射到主机了。以 mysql 为例,docker-compose.yml文件中有这样的ports配置:3306:3306,就是主机的3306和容器的3306端口形成了映射,所以我们可以这样连接:

$ mysql -h127.0.0.1 -uroot -p123456 -P3306
$ redis-cli -h127.0.0.1

这里host参数不能用localhost是因为它默认是通过sock文件与mysql通信,而容器与主机文件系统已经隔离,所以需要通过TCP方式连接,所以需要指定IP。

License

MIT

About

DGM(Docker + Go + MySQL + Redis)一键生成golang常用环境

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published