在 docker 容器上找不到可执行文件

CMD我在尝试使用 Go 应用程序在 docker 容器内运行命令时遇到了一些问题。


这是我得到的输出:


golang-api | /bin/sh: ./server: not found

golang-api exited with code 127

这是 Dockerfile


FROM golang:1.18-alpine


RUN apk add g++ && apk add make


WORKDIR /app


COPY go.mod go.sum ./


RUN go mod download


COPY . .


RUN make build


EXPOSE 8000


CMD ./server

这是负责构建命令的 Makefile:


LINUX_AMD64 = GOOS=linux GOARCH=amd64 CGO_ENABLED=1 GO111MODULE=on


migrate:

    cd cmd/migrations/$(FOLDER) && go run main.go


build:

    cd cmd && $(LINUX_AMD64) go build -a -v -tags musl -o server

和 docker-compose.yml


version: '3.1'


services:

  api:

    build:

      dockerfile: Dockerfile

      context: .

    container_name: golang-api

    ports:

      - "8000:8000"

    restart: unless-stopped

    depends_on:

      - db

    environment:

      - POSTGRES_URL=$POSTGRES_URL


  db:

    image: postgres

    restart: always

    environment:

      POSTGRES_USER: postgres

      POSTGRES_PASSWORD: postgres

    ports:

      - '5432:5432'


ibeautiful
浏览 212回答 1
1回答

慕村225694

问题解决了。不知何故,该RUN cd cmd命令似乎没有在预期目录中生成文件。尝试使用RUN go build cmd/main.go而不是使用makefile是可行的,@paltaa 在评论中也指出了这一点。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go