弹性豆茎无法使用docker compose进行部署,失败,返回错误:open/var/pids/eb-docker-c



我已经为.net应用程序建立了码头。Dockerfile在应用程序文件夹中,而不是在存储库的根目录中

docker文件粘贴在下方

FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build
WORKDIR /src
COPY ["app/app.csproj", "app/"]
RUN dotnet restore "app/app.csproj"
COPY . .
WORKDIR "/src/app"
RUN dotnet build "app.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "app.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "app.dll"]

为了让Elastic Beanstalk读取dockerfile,我在存储库的根目录中放入了以下docker-compose.yml


version: '3.4'
services:
app:
image: app
build:
context: .
dockerfile: app/Dockerfile

Beanstalk正在成功构建dockerimage,但之后它被删除。ebengine.log显示错误

[ERROR] update processes [cfn-hup eb-docker-compose-events docker eb-docker-events healthd eb-docker-compose-log] pid symlinks failed with error Read pid source file /var/pids/eb-docker-compose-log.pid failed with error:open /var/pids/eb-docker-compose-log.pid: no such file or directory

我有相同的

[ERROR] update processes [cfn-hup eb-docker-compose-events docker eb-docker-events healthd eb-docker-compose-log] pid symlinks failed with error Read pid source file /var/pids/eb-docker-compose-log.pid failed with error:open /var/pids/eb-docker-compose-log.pid: no such file or directory

我的Docker Compose应用程序(未使用.net(在尝试将其部署到我的Elastic Beanstalk环境时发生错误。

我找到了一种方法来解决这个问题,这可能是我特有的,但我希望它能帮助你解决你的问题(因为我相信你的解决方案可能相似,或者可能完全不同(。我已经回答了这个类似的SO问题(稍作调整(,但把它发布在这里,希望它能帮助你和未来面临类似问题的开发人员。


是什么导致了我的错误:

这个...eb-docker-compose-log.pid: no such file...错误是一个错误,由我的应用程序代码在Elastic Beanstalk环境中找不到环境变量设置的单独问题触发。请参阅下面的我是如何发现问题的,以及我做了什么来解决它。


我是如何发现我真正的问题的:

我下载了完整日志,偶然发现了一个不同的错误(Last 100 lines的日志中没有显示(

  1. 转到您的EB环境
  2. 单击左侧导航上的Logs
  3. 单击Request Logs下拉按钮(位于右上角(
  4. 单击Full Logs
  5. 完整日志准备就绪后,单击Download链接

在日志中,我在eb-docker/containers/eb-current-app/eb-stdouterr.log文件中发现了真正的问题,问题是我的应用程序代码无法找到我在Elastic Beanstalk软件配置中设置的环境变量。

如果你好奇我的错误是怎么说的:

panic: required key ONE_OF_MY_ENV_KEYS missing value

(我在这个日志中也有其他几个错误,我首先修复了这些错误,但修复上面显示的错误最终解决了...eb-docker-compose-log.pid: no such file...问题(


如何修复此错误:

事实证明,如果你使用docker-compose.yml,在Elastic Beanstalk软件配置中设置环境变量时,你必须确保使用Elastic Beanstalk为你创建的.env文件;否则(来自我自己的测试(,EB仅查看/使用您在自己的.env文件或docker-compose.yml中指定的environment:列表中指定的环境变量键/值。

注意:请参阅"弹性豆茎";环境属性和环境变量"和";引用容器中的环境变量">此处文档中的部分,特别是以下部分:

"Elastic Beanstalk在应用程序项目的根目录中生成一个名为.env的Docker Compose环境文件。此文件存储为Elastic Beanstalk配置的环境变量。

注意如果在应用程序捆绑包中包含.env文件,Elastic Beanstalk将不会生成.env文件">

我通过更新docker-compose.yml文件以指向EB将为我创建的假定.env文件来解决问题(通过将env_file: .env添加到需要它的服务中(,即:

version: "3"
services:
my_service1:
# ...
env_file: .env
my_service2:
# ...
env_file: .env

最新更新