当前位置: 首页 > news >正文

Dockerfile部署golang,docker-compose

使用go镜像打包,运行在容器内

redis和mysql用外部的
项目目录结构 w1go项目:
在这里插入图片描述

Dockerfile

# 这种方式是docker项目加上 本地的mysql和redis环境
# go打包的容器
FROM golang:alpine AS builder# 为我们镜像设置一些必要的环境变量
ENV GO111MODULE=on \CGO_ENABLED=0 \GOOS=linux \GOARCH=amd64 \GOPROXY=https://goproxy.cn,direct# 移动到工作目录:/build
WORKDIR /build# 复制当前目录项目中的 go.mod 和 go.sum文件并下载依赖信息
COPY go.mod .
COPY go.sum .
RUN go mod download# 复制代码
COPY . .# 编译代码 -o w1
RUN go build -o w1 ./w1#创建一个小镜像
FROM scratch#静态文件
#COPY ./log /log
#COPY ./config /config# 从builder镜像中把/dist/ww 拷贝到当前目录
COPY --from=builder /build/w1 /#Entrypoint指令用于设定容器启动时第一个运行的命令及其参数,后面的值就是参数
ENTRYPOINT ["/w1"]

打包镜像,运行

docker build -t goww .
docker run -d -p 18888:8888 --name goww1 goww

关联其他容器

上面示例使用的方式是Docker+本地的mysql环境
创建mysql容器 参考 Dockerfile构建mysql

#mysqlww4 容器名,mysqlww4 是go代码里面链接mysql的路径
docker run -d -p 18880:8888 --name goww4 --link=mysqlww4:mysqlww4 goww4
dsn := "root:root@tcp(mysqlww4:3306)/test?charset=utf8&parseTime=True&loc=Local&timeout=10s"

docker-compose 整合

目录
在这里插入图片描述

wait-for-it 官方下载

docker-compose.yml

# yaml 配置
version: "3.7"
services:mysql56:image: mysql:5.6restart: "always"ports:- 33065:3306command: "--default-authentication-plugin=mysql_native_password --init-file /data/application/test.sql"# 账号密码environment:MYSQL_ROOT_PASSWORD: "root"MYSQL_DATABASE: "test"MYSQL_PASSWORD: "root"# 文件夹以及文件映射volumes:- ./test.sql:/data/application/test.sql- /dockerval/compose5/mysql:/var/lib/mysqlredis626:# 镜像版本号image: redis:6.2.6# 端口号ports:- 18100:6379# 失败后总是重启restart: "always"# 以配置文件的方式启动 redis.conf# command:"redis-server /etc/redis/redis.conf --appendonly yes"# 文件夹以及文件映射volumes:- /dockerval/compose5/redis:/dataw1:build: .restart: "always"# shell脚本方式启动 执行顺序command: ["/wait-for-it.sh","mysql56:3306","--","/w1"]# 依赖启动项depends_on:- mysql56- redis626ports:- 18805:8888

Dockerfile

FROM golang:alpine AS builder# 为我们镜像设置一些必要的环境变量
ENV GO111MODULE=on \CGO_ENABLED=0 \GOOS=linux \GOARCH=amd64 \GOPROXY=https://goproxy.cn,direct# 移动到工作目录:/build
WORKDIR /build# 复制当前目录项目中的 go.mod 和 go.sum文件并下载依赖信息
COPY go.mod .
COPY go.sum .
RUN go mod download# 复制代码
COPY . .# 编译代码 -o w1
RUN go build -o w1 ./w1#创建一个小镜像
FROM debian:stretch-slim#静态文件
COPY ./wait-for-it.sh /
#COPY ./log /log
#COPY ./config /config# 从builder镜像中把/build/ww 拷贝到当前目录
COPY --from=builder /build/w1 /RUN chmod 755 wait-for-it.sh#Entrypoint指令用于设定容器启动时第一个运行的命令及其参数,后面的值就是参数
#ENTRYPOINT ["/w1"]

go连接mysql: root:root@tcp(mysql56:3306)/test?charset=utf8&parseTime=True&loc=Local&timeout=10s
执行命令:docker-compose up(docker-compose up -d是后台运行)
如果是修改需要重新构建执行:docker-compose build
在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/115732.html

相关文章:

  • 什么是Linux,如何在Windows操作系统下搭建Linux环境,远程连接Linux系统
  • Ubuntu下RabbitMQ安装与简单使用
  • 力扣62.不同路径(动态规划)
  • TypeScript 泛型的概念和基本使用
  • redis的事务和watch机制
  • objectMapper.getTypeFactory().constructParametricType 方法的作用和使用
  • 【websocket - Tornado】简易聊天应用
  • TCP 三次握手,四次挥手
  • Nginx之Rewrite重定向
  • uni-app微信小程序开发自定义select下拉多选内容篇
  • VUE+view table.exportCsv()导出.csv文档时如何防止数据格式为科学计数
  • Java基础练习六(排序)
  • 【Go】Go数据操作 - 处理JSON文件
  • 服务器之LNMP
  • 恒运资本:定向增发一般多久完成?
  • mysql进阶篇(二)
  • 考研C语言进阶题库——更新31-32题
  • 机动车号牌正则表达式(兼容新能源车牌)
  • idea如何上传项目到github(超详细)
  • 护网专题简单介绍
  • GO学习之 网络通信(Net/Http)
  • <dependency> idea中为什么这个变黄色
  • SA8000 社会责任要求之健康安全准则
  • SpringMVC的架构有什么优势?——控制器(三)
  • AI和ChatGPT:人工智能的奇迹
  • 掌握 JVM 的参数及配置
  • 如何高性能、高效率地实现3D Web轻量化?
  • 【Linux 网络】 传输层协议之TCP协议 TCP的三次握手和四次挥手
  • git仓库与本地暂存区的同步问题
  • MATLAB算法实战应用案例精讲-【图像处理】图像分类模型-LeNetAlexNetVGG