尝试通过ecs-cli compose
将Django应用程序部署到ECS时遇到问题。当我在本地运行docker-compose up
时,效果很好,但是当我使用ecs-cli compose up
时,找不到我的入口点文件。我已经通过SSH进入EC2实例,并使用docker run -it {image_id} sh
验证了该文件存在于预期路径中并且可以执行。这是我的Dockerfile:
# pull official base image
FROM python:3.7-slim-stretch
MAINTAINER mail@test.com
# set working directory
WORKDIR /usr/src/app
RUN apt-get update && \
apt-get install -y \
libpq-dev
# install dependencies
COPY requirements/base.txt requirements.txt
RUN pip install --upgrade pip \
&& pip install -r requirements.txt
# copy project
# entrypoint.sh is in the current directory and gets copied over here
COPY . /usr/src/app/
# run entrypoint.sh
ENTRYPOINT ["/usr/src/app/entrypoint.sh"]
当我运行ecs-cli compose up
命令时,它将尝试启动容器,但最终它们以“ STOPPED”结尾。当我运行ecs-cli ps
时,显示错误:
STOPPED Reason: CannotStartContainerError: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"/usr/src/app/entrypoint.sh\": stat /usr/src/app/entrypoint.sh: no such file or directory": unknown
SO上的其他人在ENTRYPOINT路径周围使用单引号(我在使用双引号)时或在entrypoint.sh文件声明为bash而不是sh(mine声明为sh)时遇到了类似的问题,或者Windows行尾可能出现的时候(我在MacOS上)。
我是Docker和ECS的新手,所以在此先感谢您的帮助或见识!