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 的管理界面。