gpt4 book ai didi

docker - 如何借助docker compose正确设置golang应用的第三方库?

转载 作者:IT王子 更新时间:2023-10-29 02:35:33 25 4
gpt4 key购买 nike

我正在尝试借助 docker compose 部署我的 Golang 应用程序。

在 CentOS 服务器中文件夹的层次结构:

docker_app
- src
- app
- docker-compose.yml
- main.go

这个 Golang 应用程序使用了几个第三方库:

  • gorilla 多路复用器;

  • gorilla 处理程序;

  • pq;

  • godotenv;

  • GORM;

  • 甲骨文。

docker-compose.yml:

version: '2'

services:
app:
image: golang:1.11-alpine
volumes:
- .:/go/src/app
working_dir: /go/src/app
command: go run main.go

当我尝试运行 docker-compose up 项目时出现错误:

Attaching to app_app_1
app_1 | main.go:4:2: cannot find package "github.com/gorilla/handlers" in any of:
app_1 | /usr/local/go/src/github.com/gorilla/handlers (from $GOROOT)
app_1 | /go/src/github.com/gorilla/handlers (from $GOPATH)

如您所见,我需要设置第三方库。如何正确制作?还有如何借助docker compose设置 future docker image和contaiener的名称?

是否可以在 Windows 10 上创建 go.mod 文件?

当我运行 $Env:GOOS = "linux"; $Env:GOARCH = "amd64";在 Powershell 中执行 build 命令会引发错误:

enter image description here

最佳答案

Is it possible to create go.mod file on Windows 10?

可以,只要你有 Go 1.11/1.12

但要将它与 docker-compose 一起使用,您可以关注 Miłosz Smółka 的“Go Docker dev environment with Go Modules and live code reloading

他使用一个Dockerfile进行编译:

FROM golang:1.11.2-stretch
RUN go get github.com/cespare/reflex
COPY reflex.conf /
ENTRYPOINT ["reflex", "-c", "/reflex.conf"]

然后执行 docker-compose,安装编译后的可执行文件,*和 Go module cache :

version: '3'
services:
publisher:
build: .
volumes:
- ./publisher:/app
- $GOPATH/pkg/mod/cache:/go/pkg/mod/cache
working_dir: /app
env_file:
- .env
ports:
- 5000:5000

关于 go-goracle/goracle 的交叉编译问题, issue 59详情:

goracle needs CGO to compile in the Oracle OCI libs.
So either a cross-compiling C toolchain is required (and special env vars set accordingly), or a native env (that's easier, IMHO).

意思是:不要尝试从 Windows 交叉编译它,而是直接使用正确的操作系统在 Dockerfile 中进行交叉编译(通过 Linux VM,Windows 10 HyperV environment 就是这种情况)。

关于docker - 如何借助docker compose正确设置golang应用的第三方库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55095544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com