我正在尝试用3个容器运行docker compose设置:golang-app(api)、postgres和nginx。
我为golang创建了docker compose文件和Dockerfile。
我尝试了不同的方法,但仍然有一个错误“来自守护程序的错误响应:无法创建填充程序任务:OCI运行时创建失败:运行库创建失败:无法启动容器进程:exec:”/main“:stat./main:no such file or directory:unknown”来自Dockerfile。一些如何
RUN go build -o main .
正在其他位置创建垃圾箱。
这是我的docker compose文件,位于我的项目的根目录:
version: '3.8'
services:
apigateway:
build:
context: .
dockerfile: .docker/go/Dockerfile
ports:
- "8080:8080"
volumes:
- ./apigateway:/apigateway
depends_on:
- postgres
networks:
- app-network
nginx:
image: nginx:1.26.0
ports:
- "80:80"
volumes:
- ./.docker/nginx/conf.d:/etc/nginx/conf.d
depends_on:
- apigateway
networks:
- app-network
postgres:
image: postgres:16.2
ports:
- "5210:5432"
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydb
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- app-network
volumes:
postgres_data:
networks:
app-network:
Dockerfile位于
.docker/go/Dockerfile
并且它包含:
FROM golang:1.22-alpine
RUN apk update && apk upgrade && \
apk add --no-cache bash openssh
WORKDIR /apigateway
COPY ./apigateway/go.mod ./apigateway/go.sum ./
RUN go mod download
COPY ./apigateway .
RUN go build -o main .
EXPOSE 8080
CMD ["./main"]
非常感谢您的帮助。
我试图创建bin并将其复制以执行,但它不起作用,因为bin是在macos中构建的,不能在linux中执行。
我在Dockerfile的比赛中也打了很多球,但没有取得任何成功