Skip to content

Go 环境

why

  • 开发:作为 Go 开发环境

how

  • 挂载公共目录(ssh 授权公钥、/root/.vscode-server vscode 远程服务目录)工作目录
  • 构建镜像:基于 go + alpine,启动 ssh 服务。注意需添加 go 软链接到 /usr/local/bin 目录
  • 运行镜像
Dockerfile
FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/golang:1.22.12-alpine3.21

EXPOSE 22

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
    && apk update \
    && apk add gcompat libstdc++ curl bash git openssh

RUN ssh-keygen -A

RUN sed -i 's/#PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config \
    && sed -i 's/#PubkeyAuthentication.*/PubkeyAuthentication yes/g' /etc/ssh/sshd_config \
    && sed -i 's/#PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config \
    && sed -i 's/#PermitTunnel.*/PermitTunnel yes/g' /etc/ssh/sshd_config \
    && sed -i 's/AllowTcpForwarding.*/AllowTcpForwarding yes/g' /etc/ssh/sshd_config
    
# 添加授权的 ssh 公钥,添加 go 软链接,启动 ssh 服务
CMD ["sh", "/bind/init_go.sh"]
sh
# init_go.sh
mkdir -p /root/.ssh
cat /bind/.ssh/authorized_keys > /root/.ssh/authorized_keys
ln -s /usr/local/go/bin/go /usr/local/bin/go
/usr/sbin/sshd
tail -f /dev/null
sh
# 构建
docker build -t aubur/golang-1.22.12-alpine3.21 .

# 运行
docker run -d --rm 
    -p 4122:22 \
    --mount type=bind,source=/home/aubur/work/docker/bind,target=/bind \
    --mount type=bind,source=/home/aubur/work/docker/bind/.vscode-server,target=/root/.vscode-server \
    aubur/golang-1.22.12-alpine3.21
访问量 PV:Blocked用户数 UV:Blocked