Executable file not found in $PATH: unknown. Как исправить?

Всем привет!

Dockerfile

# ------------------------------------------------------------------------------
# Base image
# ------------------------------------------------------------------------------
FROM golang:1.21-bullseye AS golang_base
ENV USER=nonroot
ENV GROUP=nonroot
ENV UID=1000
ENV GID=1000
ENV GO111MODULE="on"
ENV GOOS=linux
WORKDIR /app
COPY . .
RUN go mod tidy
RUN addgroup --gid="${GID}" ${GROUP}
RUN adduser \
    --disabled-password \
    --gecos "" \
    --home "/nonexistent" \
    --shell "/sbin/nologin" \
    --no-create-home \
    --uid "${UID}" \
    --ingroup "${GROUP}" \
    "${USER}"

# ------------------------------------------------------------------------------
# Test image
# ------------------------------------------------------------------------------
FROM golang_base AS golang_test
ENV GO111MODULE="on"
ENV GOOS=linux
WORKDIR /app
RUN mkdir -m 777 /var/www
CMD go test ./...


# ------------------------------------------------------------------------------
# Build image
# ------------------------------------------------------------------------------
FROM golang_base AS golang_build
ENV GO111MODULE="on"
ENV GOOS=linux
RUN mkdir -m 777 /nonexistent
RUN apt-get update && apt-get install -y git protobuf-compiler golang-goprotobuf-dev
WORKDIR /app
RUN mkdir -m 777 /var/www
RUN go build -o /var/www/server /app/cmd/main.go
RUN chmod +x /var/www/server
RUN go install google.golang.org/protobuf/cmd/[email protected]
RUN go install google.golang.org/grpc/cmd/[email protected]


# ------------------------------------------------------------------------------
# Development image
# ------------------------------------------------------------------------------
FROM golang_build AS golang_dev
ENV APP_PORT=8080
ENV USER=nonroot
USER ${USER}
VOLUME /app
WORKDIR /app
EXPOSE ${APP_PORT}
CMD go run /app/cmd/main.go


# ------------------------------------------------------------------------------
# Production image
# ------------------------------------------------------------------------------
FROM alpine:3.7 AS golang_prod
ENV APP_PORT=8080
ENV USER=nonroot
COPY --from=golang_base /etc/passwd /etc/passwd
COPY --from=golang_build /var/www/server /var/www/server
RUN chmod 755 /var/www/server
RUN chown ${USER} /var/www/server
RUN chmod a+x /var/www/server
USER ${USER}
WORKDIR /var/www
EXPOSE ${APP_PORT}
CMD ["server"]

docker-compose.yml

version: '3.9'

networks:
  database:

services:
  database: &database
    container_name: database
    image: postgres
    healthcheck:
      test: [ "CMD", "pg_isready", "-q", "-d", "${POSTGRES_DB}", "-U", "${POSTGRES_USER}" ]
      timeout: 45s
      interval: 2s
      retries: 10
    env_file:
      - .env
    ports:
      - ${POSTGRES_PORT_EXTERNAL}:${POSTGRES_PORT}
    environment:
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}
      - POSTGRES_PORT=${POSTGRES_PORT}
    volumes:
      - profile-database:/var/lib/postgresql/data:delegated
    networks:
      - database
  prod:
    container_name: profile
    build:
      context: .
      dockerfile: ./build/dockerfiles/golang/Dockerfile
      target: golang_prod
    volumes:
      - ./:/app
    environment:
      - POSTGRES_HOST=database
      - POSTGRES_PORT=${POSTGRES_PORT}
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}
    ports:
      - ${GRPC_PORT}:${GRPC_PORT}
      - "40000:40000"
    security_opt:
      - seccomp:unconfined
    cap_add:
      - SYS_PTRACE
    depends_on:
      database:
        condition: service_healthy
    networks:
      - database

volumes:
  profile-database: { }

запускаю

docker-compose run --rm prod

выдает

docker-compose run --rm prod
[+] Building 0.0s (0/0)                                                                                                                                                                                                                                                                              docker:default
[+] Creating 1/0
 ✔ Container database  Running                                                                                                                                                                                                                                                                                 0.0s 
[+] Building 0.0s (0/0)                                                                                                                                                                                                                                                                              docker:default 
Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "server": executable file not found in $PATH: unknown

Прошу помогите. Как исправить?


UPD:

приложение - это service профилей на grpc

https://github.com/3110Y/cc-profile/tree/init

UDP2:

даже такое приложение вызывает такую ошибку

package main

import "fmt"

func main() {
    fmt.Println("hhhh")
}

Ответы (0 шт):