Docker 看不到复制的文件并且不执行它

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

我写了一个

Dockerfile
来制作我的项目的图像:

FROM golang:alpine AS builder
WORKDIR /app
ADD go.mod .
COPY . .
RUN go build -o bot .

FROM alpine
WORKDIR /app
COPY --from=builder /app/bot /app/bot
COPY migration migration
COPY migrate.sh .
RUN chmod +x migrate.sh
CMD ["./bot"]

我需要复制

migration
目录和
migrate.sh
脚本来进行迁移。

然后我写了一个

docker-compose
文件:

services:
  postgres:
    image: postgres:latest
    container_name: postgres
    restart: always
    environment:
      POSTGRES_DB: ${POSTGRES_DB}
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    ports:
      - "${POSTGRES_PORT}:5432"
    networks:
      - bot-reminder
  bot:
    image: my_image
    container_name: bot
    restart: always
    environment:
      POSTGRES_DB: ${POSTGRES_DB}
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_HOST: ${POSTGRES_HOST}
      POSTGRES_PORT: ${POSTGRES_PORT}
      TOKEN: ${TOKEN}
      TIMEOUT: ${TIMEOUT}
      MAX_MSG_SIZE: ${MAX_MSG_SIZE}
      CHANNEL_ID: ${CHANNEL_ID}
      LOG_LEVEL: ${LOG_LEVEL}
    networks:
      - bot-reminder
    depends_on:
      - postgres
    command: ["./migrate.sh", "up"]
networks:
  bot-reminder:

但是当我运行

docker compose up -d
时,
bot
容器给出了错误:

exec ./migrate.sh: no such file or directory

我运行命令

docker export bot > files.tar
。我在
files.tar
里面看到了所有必要的文件。

但是为什么容器会报错呢?为什么它不执行它?

我尝试用不同的方式编写命令

./migrate.sh up
app/migrate.sh
./app/migrate.sh
/app/migrate.sh
,但没有成功。

我还添加了命令

ls
,它打印了所有必需的文件。

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

您可以检查您的

.dockerignore
文件吗?

© www.soinside.com 2019 - 2024. All rights reserved.