san*_*hna 7 amazon-elastic-beanstalk docker-compose
我已经对 .net 应用程序进行了 docker 化。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"]
Run Code Online (Sandbox Code Playgroud)
为了使 Elastic Beanstalk 读取 dockerfile,我已将以下 docker-compose.yml 放入存储库的根目录中
version: '3.4'
services:
app:
image: app
build:
context: .
dockerfile: app/Dockerfile
Run Code Online (Sandbox Code Playgroud)
Beanstalk 正在成功构建 dockerimage,但之后它被删除。eb-engine.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
Run Code Online (Sandbox Code Playgroud)
我也有同样的
[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
Run Code Online (Sandbox Code Playgroud)
尝试将我的 Docker Compose 应用程序(未使用.net)部署到我的 Elastic Beanstalk 环境时发生错误。
我找到了一种解决此问题的方法,这可能是针对我的,但我希望它可以帮助您解决您的问题(因为我确信您的解决方案可能是相似的,或者可能完全不同)。我已经在这个类似的问题上回答了这个问题(稍作调整),但将其发布在这里希望它可以帮助您和未来面临类似问题的开发人员。
此...eb-docker-compose-log.pid: no such file...错误是由我的应用程序代码在 Elastic Beanstalk 环境中找不到环境变量设置的单独问题触发的错误。请参阅下文,了解我如何发现问题以及我如何解决该问题。
我下载了完整日志并偶然发现了一个不同的错误(该错误未显示在日志中Last 100 lines):
Logs左侧导航Request Logs下拉按钮(右上角)Full LogsDownload完整日志准备好后单击链接在日志内部,我在文件中发现了真正的问题eb-docker/containers/eb-current-app/eb-stdouterr.log,问题是我的应用程序代码无法找到我在 Elastic Beanstalk 软件配置中设置的环境变量。
如果您好奇我的错误所说的内容:
[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
Run Code Online (Sandbox Code Playgroud)
(我首先修复了此日志中的其他几个错误,但修复上面显示的错误最终...eb-docker-compose-log.pid: no such file...为我解决了问题)。
事实证明,如果您使用docker-compose.yml,在 Elastic Beanstalk 软件配置中设置环境变量时,您必须确保使用.envElastic Beanstalk 为您创建的文件;否则(根据我自己的测试),EB 仅查看/使用您在自己的.env文件或environment:列表中指定的环境变量键/值,您可以在docker-compose.yml.
注意:请参阅此处文档中的Elastic Beanstalk “环境属性和环境变量”和“引用容器中的环境变量”部分,特别是这一点:
“Elastic Beanstalk 会生成一个
.env在应用程序项目的根目录中调用的 Docker Compose 环境文件。该文件存储您为 Elastic Beanstalk 配置的环境变量。注意 如果您
.env在应用程序包中包含文件,Elastic Beanstalk 将不会生成.env文件。”
我通过更新我的文件以指向 EB 将为我创建的docker-compose.yml假定文件(通过添加到需要它的服务)来解决我的问题,即:.envenv_file: .env
panic: required key ONE_OF_MY_ENV_KEYS missing value
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1999 次 |
| 最近记录: |