暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用Docker构建 Golang 环境

李明双的身边 2021-08-11
3397

 近期在学习 Golang 欢迎关注 一起学习


由于实训营的伙伴都在问曹大对 Golang
的版本要求问题,所以曹大直接给了一个基于 CentOS
做基础镜像的 Docker
镜像出来。但是编译完之后我发现有些太大了,让我本就贫瘠的磁盘空间不得不删了一部电影才装下它。

DockerHub
Golang
的官方镜像目前只有 1.15.X
的版本,而且没有预装 gdb
dlv
这些上课必须要必备的东西。所以我自己重写了一个基于 Alpine
的上课需要的 Dockerfile
文件

1、Dockerfile 文件如下

# 曹大提供的 Dockerfile
FROM centos
RUN yum install dlv -y \
    && yum install binutils -y \
    && yum install vim -y \
    && yum install gdb -y \
    && yum install git -y \
    && yum install wget -y


RUN wget https://dl.google.com/go/go1.14.12.linux-amd64.tar.gz  \
    && tar -C /usr/local -zxvf go1.14.12.linux-amd64.tar.gz \
    && rm /go1.14.12.linux-amd64.tar.gz


ENV PATH /usr/local/go/bin:$PATH
ENV GOPATH /home
ENV GOROOT /usr/local/go
ENV GOPROXY goproxy.cn

复制

基于 Alpine
且安装了 gdb
dlv
Docker
镜像构建文件

# Dockerfile 文件

# 基于 alpine 最新版本作基础镜像
FROM alpine:latest

# 作者名称
MAINTAINER limingshuang lms.minsonlee@gmail.com

# 环境变量
env GOPATH /home
env GOROOT /usr/local/go
env GOPROXY goproxy.cn
env PATH $GOROOT/bin:$GOPATH/bin:$PATH

# 构建镜像
# 1. 修改 alpine 镜像源为阿里云镜像源
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
    # 2. 安装基础软件和依赖

    && apk add --no-cache --virtual .build-deps wget git tar \
    && apk add --no-cache gdb binutils libc6-compat \
    # 3. 下载 golang 1.14.12 && 解压

    && wget -O /tmp/go.tar.gz https://dl.google.com/go/go1.14.12.linux-amd64.tar.gz \
    && tar -C /usr/local -zxvf /tmp/go.tar.gz \
    # 4. 安装 dlv
    && echo "140.82.112.4 github.com" >> /etc/hosts \
    && echo "185.199.108.154 github.githubassets.com" >> /etc/hosts \
    && echo "199.232.69.194 github.global.ssl.fastly.net" >> /etc/hosts \
    && git clone https://github.com/go-delve/delve /tmp/delve \
    && cd /tmp/delve/cmd/dlv \
    && go build && go install \
    # 4. 清理无用安装文件和缓存文件

    && rm -rf /tmp/* \
    && rm -rf $GOPATH/pkg/* \
    && rm -rf /var/cache/apk/* \
    && rm -rf /var/src/* \
    && apk del .build-deps

# 设置工作目录
WORKDIR $GOPATH

STOPSIGNAL SIGQUIT


复制

2、使用 Dockerfile 构建镜像

docker build -t golearn .

复制

从构建结果可以看出,通过将基础镜像修改为 alpine 并做了一定的优化,成功将镜像大小缩小了近 500M。

3、启动容器

docker run -d -it -v /data/golearn:/home/src --name golearn golearn-alpine

复制

4、进入容器

docker exec -it golearn sh

复制

5、启动一个已经停止的容器

docker start <containerId or containerName>

复制

5、停止的容器

docker stop <containerId or containerName>

复制

-END -


如果你也喜欢这篇文章,请给我留个关注在看转发吧。欢迎你在评论区给我公众号后台留言与我交流~

文章转载自李明双的身边,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论