构建docker失败

问题描述 投票:0回答:1

我有下面的代码配置 Dockerfile:

# Builder Stage
FROM rust:1.76.0 as builder
ENV SQLX_OFFLINE=true

# Create a new Rust project
RUN USER=root cargo new --bin jwt
WORKDIR /jwt/

# Copy and build dependencies
COPY Cargo.toml Cargo.lock ./entity/Cargo.toml  ./
RUN cargo build --release --locked
RUN rm src/*.rs

# Copy the source code and build the application
COPY . .
RUN cargo build --release --locked

# Production Stage
FROM debian:buster-slim
ARG APP=/usr/src/app

RUN apt-get update \
    && apt-get install -y ca-certificates tzdata \
    && rm -rf /var/lib/apt/lists/*

ENV TZ=Etc/UTC \
    APP_USER=appuser

RUN groupadd $APP_USER \
    && useradd -g $APP_USER $APP_USER \
    && mkdir -p ${APP}

COPY --from=builder /jwt/ ${APP}/jwt

RUN chown -R $APP_USER:$APP_USER ${APP}

USER $APP_USER
WORKDIR ${APP}


ENTRYPOINT ["./jwt"]  
EXPOSE 8000

docker-compose.yml 在这里:

version: '3'

services:
  api-rust:
    image: username/api-rust
    container_name: api-rust
    restart: unless-stopped
    environment:
      DATABASE_URL: ${DATABASE_URL}
      JWT_SECRET_KEY: ${TOKEN}
      JWT_MAXAGE: ${JWT_MAXAGE}
    build:
      context: .
      dockerfile: Dockerfile
    networks:
      - rust_app_network
      
  postgres:
    image: postgres:13
    container_name: postgres
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
    volumes:
      - postgres:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD", "pg_isready", "-h", "postgres", "-U", "${POSTGRES_USER}"]
      interval: 5s
      timeout: 5s
      retries: 5
    networks:
      - rust_app_network

  pgadmin:
    image: dpage/pgadmin4
    container_name: pgadmin
    environment:
      PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL}
      PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD}
      PGADMIN_LISTEN_PORT: ${PGADMIN_LISTEN_PORT}
    volumes:
      - pgadmin-data:/var/lib/pgadmin
    restart: always
    depends_on:
      - postgres
    networks:
      - rust_app_network

volumes:
  postgres:
  pgadmin-data:

networks:
  rust_app_network:

当我运行“docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d”时

有问题:

来自守护进程的错误响应:无法为容器创建任务:无法创建 shim 任务:OCI 运行时创建失败:runc 创建失败:无法启动容器进程:exec:“./jwt”:stat ./jwt:没有这样的文件或目录:未知

docker docker-compose dockerfile
1个回答
0
投票

您要运行的二进制文件是什么?

COPY --from=builder /jwt/ ${APP}/jwt

因为你这样复制,所以你必须知道你要执行哪个文件。 例如

/jwt/somefile
是你要执行的文件

ENTRYPOINT ["./jwt"]  

->

ENTRYPOINT ["./jwt/somefile"]  
© www.soinside.com 2019 - 2024. All rights reserved.