如何将本地包导入docker环境
我尝试在Docker环境中运行Go API服务器,但由于出现错误而无法运行如何将本地包导入docker环境,docker,go,docker-compose,Docker,Go,Docker Compose,我尝试在Docker环境中运行Go API服务器,但由于出现错误而无法运行 ・client: react/axios ・api: golang/gin ・web-server: nginx ・db: mysql ・container: docker ・ci-tool: travis ・deploy: aws elastic beanstalk 下面是api的Docker文件 //article/api/Dockefile FROM golang:latest WORKDIR '/app' R
・client: react/axios
・api: golang/gin
・web-server: nginx
・db: mysql
・container: docker
・ci-tool: travis
・deploy: aws elastic beanstalk
下面是api的Docker文件
//article/api/Dockefile
FROM golang:latest
WORKDIR '/app'
RUN go get github.com/gin-contrib/cors
RUN go get github.com/gin-gonic/gin
RUN go get github.com/go-sql-driver/mysql
RUN go get github.com/google/uuid
RUN go get github.com/aws/aws-sdk-go/aws
RUN go get github.com/aws/aws-sdk-go/service/s3
RUN go get github.com/joho/godotenv
COPY . .
CMD ["go", "run", "main.go"]
这是docker-compose.yml
//docker-compose.yml
api:
build:
dockerfile: Dockerfile.dev
context: ./api
volumes:
- ./api:/app
depends_on:
- db
tty: true
environment:
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- MYSQL_USER
- MYSQL_PASSWORD
- MYSQL_HOST
我希望docker能成功,但我失败了
api_1 | main.go:14:2: cannot find package "github.com/jpskgc/article/api/controller" in any of:
api_1 | /usr/local/go/src/github.com/jpskgc/article/api/controller (from $GOROOT)
api_1 | /go/src/github.com/jpskgc/article/api/controller (from $GOPATH)
为什么不使用go模块 与Golang一起使用多阶段构建docker非常流行 这将创建一个非常小的图像
FROM golang:1.12.9-alpine AS builder
WORKDIR /src
COPY ./go.mod ./go.sum ./
RUN go mod download
COPY ./ ./
RUN CGO_ENABLED=0 go build \
-installsuffix 'static' \
-o /myapp .
FROM scratch AS final
COPY --from=builder /myapp /myapp
EXPOSE 8080
ENTRYPOINT ["/myapp"]
请注意,不能在正在运行的容器上运行bash。
使用web服务时,您需要添加ca证书
可能的副本
FROM golang:1.12.9-alpine AS builder
WORKDIR /src
COPY ./go.mod ./go.sum ./
RUN go mod download
COPY ./ ./
RUN CGO_ENABLED=0 go build \
-installsuffix 'static' \
-o /myapp .
FROM scratch AS final
COPY --from=builder /myapp /myapp
EXPOSE 8080
ENTRYPOINT ["/myapp"]