Heroku:找不到Docker入口点

我正在尝试在Heroku上部署一个项目。我已经设置了bash入口点应用程序,该应用程序位于应用程序的根目录中。 Dockerfile内容:

FROM node:10

# Create app directory
WORKDIR /usr/app

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./

RUN npm install
# If you are building your code for production
# RUN npm ci --only=production

# Bundle app source
COPY . .

RUN entrypoint.sh

heroku尝试部署时,在此行中调用入口点时会失败:

RUN entrypoint.sh

它表示找不到entrypoint.sh-尽管它位于项目目录中,并且已添加到容器中。请参阅项目结构here

g200mail 回答:Heroku:找不到Docker入口点

在docker文件中使用ENTRYPOINT指令在入口点设置脚本 ENTRYPOINT ["./entrypoint.sh"] 还要确保它是可执行的(权限)

,

您使用的是RUN而不是ENTRYPOINT

  • RUN的意思是“在构建过程中运行此命令”。
  • ENTRYPOINT的意思是“将此命令设置为执行docker run时的操作。”
,

您的根目录中是否有heroku.yml?如果是这样,那么您可能已经在run语句的heroku.yml下定义了相同的进程,因此这就是为什么拒绝权限的原因。

这里有两点很重要:

  1. 如果在heroku.yml中定义了运行命令,那么Heroku将使用此命令,而不是在dockerfile中定义的命令。

  2. 使用CMD语句,因为这是Heroku执行的语句,请查看其documentation

  

如果不包括运行部分,则Heroku使用Dockerfile中指定的CMD。

本文链接:https://www.f2er.com/2941290.html

大家都在问