【发布时间】:2015-04-27 14:31:49
【问题描述】:
我已经使用this 教程编译了我的 Go 应用程序以在从头开始派生的容器上运行。
我的 go 代码使用来自 os/user 的 user.Current()。当我使用博客文章中的技术时,运行容器时出现以下错误:
user: Current not implemented on linux/amd64
详细说明:
这是用于编译的命令:
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .
这是用于创建镜像的 Dockerfile(基于scratch):
FROM scratch
ADD ca-certificates.crt /etc/ssl/certs/
ADD main /
ENTRYPOINT ["/main"]
这是用于运行容器的命令:
sudo docker run -it -v /var/run/docker.sock:/var/run/docker.sock --rm 813
有人遇到过吗?有什么解决办法吗?
【问题讨论】:
-
用户 db 访问需要在 linux 上使用 cgo。
-
另外,你想用
user.Current做什么?如果您不需要查找用户信息,可以使用os.Getuid。 -
谢谢吉姆。将尝试使用 os.Getuid 并报告。
-
您也可以通过使用
$USER环境变量来获得所需的内容。