Docker 部署到Fargate时未找到入口点。本地工作

Docker 部署到Fargate时未找到入口点。本地工作,docker,aws-fargate,Docker,Aws Fargate,我有以下Dockerfile,当前正在我的设备中本地工作: FROM python:3.7-slim-buster WORKDIR /app COPY . /app VOLUME /app RUN chmod +x /app/cat/sitemap_download.py COPY entrypoint.sh /app/entrypoint.sh RUN chmod +x /app/entrypoint.sh ARG VERSION=3.7.4 RUN apt update &a

我有以下Dockerfile,当前正在我的设备中本地工作:

FROM python:3.7-slim-buster

WORKDIR /app

COPY . /app

VOLUME /app

RUN chmod +x /app/cat/sitemap_download.py

COPY entrypoint.sh /app/entrypoint.sh

RUN chmod +x /app/entrypoint.sh

ARG VERSION=3.7.4

RUN apt update && \
       apt install -y bash wget && \
       wget -O /tmp/nordrepo.deb https://repo.nordvpn.com/deb/nordvpn/debian/pool/main/nordvpn-release_1.0.0_all.deb && \
       apt install -y /tmp/nordrepo.deb && \
       apt update && \
       apt install -y nordvpn=$VERSION && \
       apt remove -y wget nordvpn-release

RUN apt-get clean \
    && apt-get -y update
RUN apt-get -y install python3-dev \
    python3-psycopg2 \
    && apt-get -y install build-essential

RUN pip install --upgrade pip

RUN pip install -r cat/requirements.txt

RUN pip install awscli

ENTRYPOINT ["sh", "-c", "./entrypoint.sh"]

但是,当我将其部署到Fargate时,容器在达到稳定状态之前停止,具体如下:

sh:1://入口点。sh:未找到

编辑:添加entrypoint.sh文件以进行澄清:

#!/bin/env sh
# start process, but it should exit once the file is in S3
/app/cat/sitemap_download.py
# Once the process is done, we are good to scale down the service
aws ecs update-service --cluster cluster_name --region eu-west-1 --service service-name --desired-count 0

我尝试过修改ENTRYPOINT以将其用作exec表单,或使用完整路径,但总是遇到同样的问题。你知道我做错了什么吗?

我现在已经设法解决了

将Dockerfile更改为如下所示可以解决此问题:

COPY . /app

VOLUME /app

RUN chmod +x /app/cat/sitemap_download.py

COPY entrypoint.sh /app/entrypoint.sh

RUN chmod +x /app/entrypoint.sh

ARG VERSION=3.7.4

RUN apt update && \
       apt install -y bash wget && \
       wget -O /tmp/nordrepo.deb https://repo.nordvpn.com/deb/nordvpn/debian/pool/main/nordvpn-release_1.0.0_all.deb && \
       apt install -y /tmp/nordrepo.deb && \
       apt update && \
       apt install -y nordvpn=$VERSION && \
       apt remove -y wget nordvpn-release

RUN apt-get clean \
    && apt-get -y update
RUN apt-get -y install python3-dev \
    python3-psycopg2 \
    && apt-get -y install build-essential

RUN pip install --upgrade pip

RUN pip install -r cat/requirements.txt

RUN pip install awscli

ENTRYPOINT ["/bin/bash"]
CMD ["./entrypoint.sh"]
我读了之后试过:


我相信这个语法可以解决这个问题,因为在entrypoint中,我指示bash在开始时运行,然后将脚本作为参数传递。

不是su您的意思,对不起。entrypoint.sh是docker容器中的脚本,在容器启动时运行。例如,如果我改为使用python脚本(ENTRYPOINT/app/cat/sitemap_download.py),则会找到脚本并启动容器。您是否尝试简单地编写
ENTRYPOINT[“/app/ENTRYPOINT.sh”]
?是的,正如尝试完整路径的帖子中所述,返回相同的问题。在本地工作,但不能在Fargate上工作。如果它在本地工作,那么在创建和启动容器的方式上就有问题。您如何在本地运行它?(我怀疑
行引起了问题,您可以删除它,但我不确定它是否会在本地运行。)