我需要在Docker机器上运行Golang应用程序。
我正在使用Mac OSX,而Docker是在Linux虚拟机上运行的,因此在Mac上构建的二进制文件无法在Docker上运行。
我看到两种方法:
- 在Mac上交叉编译二进制文件以供Linux OS使用
- 将项目源代码复制到Docker中,在其中运行'go get'和'go build'
第一种方法由于CGO(它在某些导入的库中使用)而较难。
第二种方法非常慢,因为涉及到'go get'操作。
请问,在这种情况下哪种方法最常见?或者我做错了什么吗?
go get
,或者至少创建一个包含它的基础镜像并从那里开始(go get
不应在生产中使用,因此大多数人都有其他方法来管理依赖项)。在单个Dockerfile中的基本解决方案是创建一个Makefile或脚本以按需安装所有依赖项,并将其放在单个RUN语句中。 - JimB