网站 正在建设中,当面付 wordpress,山东省建设管理中心网站,如何自己开发软件app使用go镜像打包#xff0c;运行在容器内
redis和mysql用外部的 项目目录结构 w1go项目#xff1a;
Dockerfile
# 这种方式是docker项目加上 本地的mysql和redis环境
# go打包的容器
FROM golang:alpine AS builder# 为我们镜像设置一些必要的环境变量
ENV GO111MODULEon …使用go镜像打包运行在容器内
redis和mysql用外部的 项目目录结构 w1go项目
Dockerfile
# 这种方式是docker项目加上 本地的mysql和redis环境
# go打包的容器
FROM golang:alpine AS builder# 为我们镜像设置一些必要的环境变量
ENV GO111MODULEon \CGO_ENABLED0 \GOOSlinux \GOARCHamd64 \GOPROXYhttps://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 --frombuilder /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 --linkmysqlww4:mysqlww4 goww4dsn : root:roottcp(mysqlww4:3306)/test?charsetutf8parseTimeTruelocLocaltimeout10sdocker-compose 整合
目录
wait-for-it 官方下载
docker-compose.yml
# yaml 配置
version: 3.7
services:mysql56:image: mysql:5.6restart: alwaysports:- 33065:3306command: --default-authentication-pluginmysql_native_password --init-file /data/application/test.sql# 账号密码environment:MYSQL_ROOT_PASSWORD: rootMYSQL_DATABASE: testMYSQL_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:8888Dockerfile
FROM golang:alpine AS builder# 为我们镜像设置一些必要的环境变量
ENV GO111MODULEon \CGO_ENABLED0 \GOOSlinux \GOARCHamd64 \GOPROXYhttps://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 --frombuilder /build/w1 /RUN chmod 755 wait-for-it.sh#Entrypoint指令用于设定容器启动时第一个运行的命令及其参数,后面的值就是参数
#ENTRYPOINT [/w1]go连接mysql root:roottcp(mysql56:3306)/test?charsetutf8parseTimeTruelocLocaltimeout10s 执行命令docker-compose updocker-compose up -d是后台运行 如果是修改需要重新构建执行docker-compose build