亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Dockerfile 和 docker-compose.yml 中編寫什么代碼以在 docker

在 Dockerfile 和 docker-compose.yml 中編寫什么代碼以在 docker

Go
茅侃侃 2023-07-17 14:36:31
我介紹local package了go modules服務器端 api。在本地環境下運行正常,通過命令不會報錯go run main.go。但在指揮的時候卻不起作用docker-compose up。我想知道要編寫 Dockerfile 和 docker-compose.yml 來修復哪些問題。go mod init我在目錄下命令article。結果,它設置module github.com/jpskgc/article在go.mod.article  ├ db  ├ client  ├ api  │  ├ main.go  │  ├ controller  │  │    └ controller.go  │  └ Dockerfile  ├ nginx  ├ docker-compose.yml  ├ go.mod  └ go.sum主程序package mainimport (    "database/sql"    "os"    "time"    "github.com/gin-gonic/gin"    "github.com/jpskgc/article/api/controller")    api := router.Group("/api")    {        api.GET("/articles", func(c *gin.Context) {            controller.GetArticleController(c, db)        })    }    router.Run(":2345")}DockerfileFROM golang:latestENV GO111MODULE=onWORKDIR /go/src/github.com/jpskgc/article/appCOPY . .RUN go mod downloadRUN go buildRUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go buildENTRYPOINT ["/go/src/github.com/jpskgc/article/app/api"]docker-compose.ymlversion: '3'services:  api:    build:      dockerfile: Dockerfile.dev      context: ./api    volumes:      - ./api:/go/src/github.com/jpskgc/article/app    depends_on:      - db    tty: true    environment:      - AWS_ACCESS_KEY_ID      - AWS_SECRET_ACCESS_KEY      - MYSQL_USER      - MYSQL_PASSWORD      - MYSQL_HOST      - GO111MODULEgo.modmodule github.com/jpskgc/articlego 1.12require (    github.com/aws/aws-sdk-go v1.23.7    github.com/gin-contrib/cors v1.3.0    github.com/gin-gonic/gin v1.4.0    github.com/go-sql-driver/mysql v1.4.1    github.com/google/uuid v1.1.1    github.com/joho/godotenv v1.3.0)我希望服務器端 api 在 docker 環境中正常工作,不會出現錯誤。但實際情況是服務端的docker環境無法運行。這是命令 docker-compose up 時的錯誤消息build command-line-arguments: cannot load github.com/jpskgc/article/api/controller: cannot find module providing package github.com/jpskgc/article/api/controllerarticle_api_1 exited with code 1這是 github 上的完整源代碼(分支:try-golang-mod)。我希望有人給我Dockerfile和的答案代碼docker-compose.yml。 https://github.com/jpskgc/article/tree/try-golang-mod
查看完整描述

2 回答

?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

您的 docker 上下文是 ./api,但 go.mod 位于父目錄中,因此 go.mod 不包含在您的映像中。

一種選擇是將 docker 上下文更改為源樹的根目錄(api 的父目錄),然后將文件/目錄從那里復制到映像中。


查看完整回答
反對 回復 2023-07-17
?
交互式愛情

TA貢獻1712條經驗 獲得超3個贊

我通過以下方式解決這個問題。


go mod init article/api在api目錄。

article

  ├ client

  ├ api

  │  ├ main.go

  │  ├ contoroller

  │  │    └ contoroller.go

  │  ├ //

  │  ├ go.mod 

  │  ├ go.sum

  │  └ Dockerfile

  ├ nginx

  ├ go.mod

  ├ go.sum

  └ docker-compose.yml

使固定Docekrfile

FROM golang:latest

ENV GO111MODULE=on

WORKDIR /app

COPY go.mod .

COPY go.sum .

RUN go mod download

COPY . .

RUN go build

RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build

ENTRYPOINT ["/app/api"]

命令docker-compose down然后docker-compose up --build


查看完整回答
反對 回復 2023-07-17
  • 2 回答
  • 0 關注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號