这里是文章模块栏目内容页
Docker部署go环境构建Minio本地镜像的方法实现

Docker部署go环境构建Minio本地镜像的方法实现


创建minio的镜像构建文件 Dockerfile文件,本地修改过的minio目录 下创建Dockerfile文件。

FROM golang:1.15-alpine as builder

第一句必须需要,表示从这个基础镜像创建新镜像。

ENV GOPATH /go
ENV CGO_ENABLED 0
ENV GO111MODULE on
ENV GOPROXY=https://goproxy.io

创建docker里面的环境变量信息,即配置go环境。

WORKDIR $GOPATH/src/minio
设置docker的工作目录WORKDIR;
COPY . $GOPATH/src/minio

把本地Dockerfile所在目录全部映射 到docker的镜像工作目录。

RUN  go install -v -ldflags "$(go run buildscripts/gen-ldflags.go)"

执行在docker 内用go编译项目生成minio可自行文件。

一般go项目编译生成的可自行文件在 go的bin目录下。

我们在开始设置GOPATH 目录是/go ,所以minio编译好是在docker的 /go/bin/minio 这个文件。

FROM alpine:3.12

拉取 alpine 镜像作为基础环境,它是类型ubuntu一样的linux系统环境,但是比ubuntu 代码小很多,也精简了很多,

适合在docker的环境内运行,占用空间和内存都小。alpine 环境用apk工具来管理各种软件包。

所以下面用apk 包工具 下载安装了curl,su-exec 等工具。


#完整的Dockerfile内容start====================>>

FROM golang:1.15-alpine as builder
LABEL maintainer="MinIO Inc <example@min.io>"
ENV GOPATH /go
ENV CGO_ENABLED 0
ENV GO111MODULE on
ENV GOPROXY=https://goproxy.io
WORKDIR $GOPATH/src/minio
COPY . $GOPATH/src/minio
RUN  go install -v -ldflags "$(go run buildscripts/gen-ldflags.go)"
FROM alpine:3.12
ENV MINIO_ACCESS_KEY_FILE=access_key \
    MINIO_SECRET_KEY_FILE=secret_key \
    MINIO_KMS_MASTER_KEY_FILE=kms_master_key \
    MINIO_SSE_MASTER_KEY_FILE=sse_master_key \
    MINIO_UPDATE_MINISIGN_PUBKEY="RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRywVWGbP1aVSGav"
EXPOSE 9000
COPY --from=builder /go/bin/minio /usr/bin/minio
COPY --from=builder /go/src/minio/CREDITS /third_party/
COPY --from=builder /go/src/minio/dockerscripts/docker-entrypoint.sh /usr/bin/
RUN  \
     apk add --no-cache ca-certificates 'curl>7.61.0' 'su-exec>=0.2' && \
     echo 'hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4' >> /etc/nsswitch.conf
ENTRYPOINT ["/usr/bin/docker-entrypoint.sh"]
VOLUME ["/data"]
CMD ["minio"]


#内容end===========================>>


通过Dockerfile构建 docker镜像:

$ docker build -t minio/doyou:first .

这句命令后面有个 . (点) 不能忽略,缺少它执行不了。

构建完成后查看docker 的镜像列表内是否有 新的minio/doyou

$ docker images


然后用镜像文件启动一个docker容器 运行minio:

docker run -d -p 9005:9000 \
 --name myminio  -e "MINIO_ROOT_USER=minioadmin" \ 
 -e "MINIO_ROOT_PASSWORD=minioadmin" \
 -v /home/myminiodata:/data \
 minio/doyou:first server /data


运行成功,打开http://localhost:9005 地址,可以看到Minio 的管理界面。