使用docker-compose部署后台管理系统实战

项目结构如图,目标是将前端编译后的dist和后端的二进制文件使用一个docker-compose.yml进行一键式部署

向Dockerhub推送镜像流程

1.在Dockhub中注册一个账号

2.在终端中输入docker login

 输入你的邮箱和密码,将会自动在你本地保存信用凭证,没到期就不用重新登陆

3.docker push指定的镜像名或者id前几位(确保唯一标识)

数据库 

让我们注意这个数据库的服务名,docker会自动创建网络,其中带有的dns会自动将数据库的服务名(db)转化为数据库的ip地址

 ​​

# Use root/example as user/password credentials
version: '3.1'

services:

  db:
    image: mysql:8.0
    # NOTE: use of "mysql_native_password" is not recommended: https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password
    # (this is just an example, not intended to be a production configuration)
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
    volumes:
      # 挂载数据目录
      - "./mysql/data:/var/lib/mysql"
      # 挂载配置文件目录
      - "./mysql/config:/etc/mysql/conf.d"

 后端

由于go语言的编译特性,我们可以很轻松的获取到编译后的二进制文件,让我们简单的把它制作成镜像,看好下面的数据库连接字符串,我们制定了db作为对象,docker会自动索引它到我们开启的数据库中

1.制作一个Dockerfile

Dockerfile(请保持这个命名格式)可视作一大堆命令的集合

让我们制作它

# alpine体积最小的linux发行版,打包出来的镜像也最小,你在什么系统编译的go二进制就用什么
FROM alpine

# ENV GOPROXY https://goproxy.cn/

# 设置apk源
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories

# 软件包更新
RUN apk update --no-cache
RUN apk add --update gcc g++ libc6-compat
RUN apk add --no-cache ca-certificates
RUN apk add --no-cache tzdata
# 时区设置
ENV TZ Asia/Shanghai

# 复制当前的main(编译后的二进制文件)到镜像的/main
COPY ./main /main
# 复制settings
COPY ./config/settings.demo.yml /config/settings.yml
# 复制db文件
COPY ./go-admin-db.db /go-admin-db.db
# 暴露8000端口
EXPOSE 8000
# 为main增加可执行权限
RUN  chmod +x /main
# 启动服务
CMD ["/main","server","-c", "/config/settings.yml"]                                                                

我最后制作好的:

2.让我们使用docker build来制作镜像,格式如:

docker build  -t 镜像名(规范为 作者名/镜像名):版本号(latest或者1.1...)  dir(不加该参数时默认当前目录(使用当前目录下的dockerfile进行构建)) .(别忘了这个点,这个算结尾)

 3.使用docker push来推送制作好的镜像

记得先docker login登录好

 可以使用docker search 自己的名字看看

最终写好的docker-compose.yml文件如

version: '3.1'

services:
  go-admin-api:
    container_name: goadmin-backend
    image: realconsider/goadmin-backend:latest
    privileged: true
    depends_on:
       - db
    restart: always
    ports:
      - 8000:8000
    volumes:
      - ./config/:/go-admin-api/config/
      - ./static/:/go-admin-api/static/
      - ./temp/:/go-admin-api/temp/
  db:
      image: mysql:8.0
    # NOTE: use of "mysql_native_password" is not recommended: https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password
    # (this is just an example, not intended to be a production configuration)
      command: --default-authentication-plugin=mysql_native_password
      restart: always
      environment:
        MYSQL_ROOT_PASSWORD: root
        MYSQL_DATABASE: goadmin #初始化一数据库供连接
      volumes:
        # 挂载数据目录
        - "./mysql/data:/var/lib/mysql"
        # 挂载配置文件目录
        - "./mysql/config:/etc/mysql/conf.d"

调试过程中的坑 

注意数据库的volumes.如果你再开一个镜像,而volumes是同样的,注意先删除先前的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值