Go语言 如何在github action中连接docker容器?

2ul0zpep  于 2023-08-01  发布在  Go
关注(0)|答案(2)|浏览(67)

我正在尝试使用github操作设置一个单元测试工作流。
有一个单元测试必须使用的docker容器。
在我的工作流程中,我拉取并运行docker镜像(在后台),然后运行一个本地go应用程序,通过与它交互来运行测试。

docker pull xxxx.dkr.ecr.us-west-2.amazonaws.com/my-container
          docker run -d xxxx.dkr.ecr.us-west-2.amazonaws.com/my-container
          sleep 10 # make sure container setup finishes
          docker exec my-container apk add curl
          docker exec my-container curl http://localhost:1234 -I

          go test .

字符串
我可以将docker exec放入容器中,并检查它是否成功运行,因此我知道容器实际上正在工作。
单元测试在本地工作,但是在github操作中,当我尝试连接到docker容器时,无论主机名如何,我都会收到来自go应用程序的错误:
Post "http://127.0.0.1:1234": dial tcp 127.0.0.1:1234: connect: connection refused
Post "http://localhost:1234": dial tcp [::1]:1234: connect: connection refused
即使在运行一个有名字的容器并尝试连接之后,我还是得到一个错误:
Post "http://my-container:1234": dial tcp: lookup my-container: Temporary failure in name resolution
我相信更简单的解决方案是使用github actions services来运行容器,但我不知道如何从私有ECR中拉取。
感谢任何帮助!

ergxz8rk

ergxz8rk1#

我发现了我的问题,即使我在Dockerfile中有EXPOSE,我也需要运行带有端口标志docker run -p 1234:1234 ...的容器才能从主机访问它。

cigdeys3

cigdeys32#

jobs:
  dump-database:
    runs-on: ubuntu-latest
    container: ubuntu
    services:
      anonymizer:
        image: anonymizer:latest
        env:
          POSTGRES_PASSWORD: ${{ secrets.DATABASE_PASSWORD }}
        ports:
          - 5432:5432
     steps:
       - name: Dump database
         run: |
           curl anonymizer:5432/dump > dump.sql
           head -n 150 dump.sql

字符串

相关问题