Appearance
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