Dockerfile部署golang,docker-compose

5 篇文章 0 订阅

使用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.6
    restart: "always"
    ports:
      - 33065:3306
    command: "--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/mysql
  redis626:
    # 镜像版本号
    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:/data
  w1:
    build: .
    restart: "always"
    # shell脚本方式启动 执行顺序
    command: ["/wait-for-it.sh","mysql56:3306","--","/w1"]
    # 依赖启动项
    depends_on:
      - mysql56
      - redis626
    ports:
      - 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
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值