我使用自定义docker容器来构建代码,该容器与Amazon codebuild集成。 AWS codebuild会旋转Docker容器并在我们提供的容器上构建代码。 我写过的容器的Dockerfile是这样的 - > Dockerfile
Docker容器应该安装Java-8,Gradle-4.7和Postgres-10。
我在本地计算机上运行Docker容器,可以看到Postgres服务正在运行。但是,在AWS codebuild上,docker容器不会启动Postgres服务器。我尝试使用buildspec.yml文件中的命令了解Postgres的状态,发现它已关闭。
以下是我在cloudwatch日志中可以看到的错误 -
May 18, 2018 9:26:33 AM org.postgresql.Driver connect
SEVERE: Connection error:
org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
有没有人对此有任何想法? Dockerfile是否正确?
答案 0 :(得分:0)
问题可能实际上是入口点(在你提到的Dockerfile中)。
CodeBuild将覆盖每次运行的入口点,这与您在本地docker run中看到的不同(您也可以使用codebuild本地代理测试此行为)
"ENTRYPOINT ["/etc/init.d/postgresql", "start"]"
你可以发布buildspec.yml文件吗?对此的简单修复是将entrypoint命令作为buildspec.yml
的一部分运行