简体   繁体   中英

starting container process caused "exec: \"go\": executable file not found in $PATH": unknown

I am trying to containerize and as well as start my Go lang application using Docker-compose, The image is built successfully according to the logs but my container does not for docker-compose up and it throws the following error to my console.

Cannot start service app: OCI runtime create failed: container_linux.go:346: starting container process caused "exec: \\"go\\": executable file not found in $PATH": unknown

Here is what my Docker file looks like.

ARG GO_VERSION=1.13

FROM golang:${GO_VERSION}-alpine AS builder

# We create an /app directory within our
# image that will hold our application source
# files
RUN mkdir /raedar

# Create the user and group files that will be used in the running container to
# run the process as an unprivileged user.
RUN mkdir /user && \
    echo 'nobody:x:65534:65534:nobody:/:' > /user/passwd && \
    echo 'nobody:x:65534:' > /user/group

# Install git.
# Git is required for fetching the dependencies.
# Allow Go to retrieve the dependencies for the buld
RUN apk update && apk add --no-cache ca-certificates git

RUN apk add --no-cache libc6-compat

# Force the go compiler to use modules 
ENV GO111MODULE=on

ADD . /raedar/


WORKDIR /raedar/

RUN go get -d -v golang.org/x/net/html

COPY go.mod go.sum ./

COPY . .

# Compile the binary, we don't want to run the cgo
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o bin/main cmd/app/main.go


# Final stage: the running container.
FROM scratch AS final

WORKDIR /root/

# Import the user and group files from the first stage.
COPY --from=builder /user/group /user/passwd /etc/

# Import the Certificate-Authority certificates for enabling HTTPS.
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/

# Import the compiled executable from the first stage.
COPY --from=builder /raedar/bin/main .

EXPOSE 8080
# Perform any further action as an unprivileged user.
USER nobody:nobody

# Run the compiled binary.
CMD ["./main"]

The error shows you're trying to run go , not ./main :

exec: \\"go\\": executable file not found in $PATH

A matching Dockerfile would have the line CMD ["go", "./main"] rather than CMD ["./main"] .

So either you're unexpectedly building a different Dockerfile, or you're changing the command when you run a container with that image. In particular, if you're using docker-compose , make sure you're not setting command: go ./main or entrypoint: go , either of which could cause this behavior.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM