GitHub Actions中Docker容器无法连接Twitch IRC外部服务求助
问题描述
我正在基于Docker Compose构建微服务,尝试在GitHub Actions(GHA)中执行集成测试。本地测试全部通过,应用部署后运行正常,但在GHA环境中,聊天服务无法连接Twitch IRC服务器。奇怪的是该服务能完成登录操作,却无法发送消息。我推测是Docker Compose文件缺少关键网络配置,以下是GHA中使用的docker-compose.gha.yml文件及GitHub Action工作流文件,求解决思路。
docker-compose.gha.yml 文件内容
# docker-compose.gha.yml # Copyright (C) 2023 # Squidpie version: "3.5" services: redis-test: build: context: ${STRAUSS_ROOT_DIR} dockerfile: ${STRAUSS_ROOT_DIR}/tests/redis/Dockerfile networks: - strauss depends_on: - redis chat-test: build: context: ${STRAUSS_ROOT_DIR} dockerfile: ${STRAUSS_ROOT_DIR}/tests/chat/Dockerfile networks: - strauss depends_on: - chat redis: image: redis:7.0.6-alpine container_name: redis networks: - strauss chat: image: strauss/chat:${STRAUSS_CHAT_PKG_VERSION} container_name: chat build: context: ${STRAUSS_ROOT_DIR} dockerfile: ${STRAUSS_ROOT_DIR}/services/chat/Dockerfile args: version: "prod" STRAUSS_BUILD_DIR: ${STRAUSS_BUILD_DIR} environment: TWITCH_USER: ${TWITCH_USER} TWITCH_TOKEN: ${TWITCH_TOKEN} networks: - strauss volumes: - ./strauss.yml:/strauss/strauss.yml depends_on: - redis networks: strauss: name: strauss driver: bridge
GitHub Action工作流文件(strauss-validate.yml)内容
# strauss-validate.yml # Copyright (C) 2023 # Squidpie name: strauss-validate run-name: ${{ github.actor }} is validating strauss on: push: branches: [dev, stage/*] pull_request: types: [assigned, opened, synchronize, reopened] branches: [dev] workflow_dispatch: {} jobs: validate: name: Validate strauss runs-on: ubuntu-latest env: STRAUSS_ROOT_DIR: ${{ github.workspace }} STRAUSS_BUILD_DIR: target/debug steps: - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 0 - name: Setup GitVersion uses: gittools/actions/gitversion/setup@v0.9.15 with: versionSpec: '5.x' - name: Resolve Version id: gitversion uses: gittools/actions/gitversion/execute@v0.9.15 - name: Setup Ruby uses: ruby/setup-ruby@v1 with: ruby-version: '3.2' bundler-cache: true - name: Setup Strauss Env run: | ./scripts/gen-gha-env.sh cat .env > .env.runtime echo ${{ secrets.STRAUSS_SECRETS }} >> .env.runtime printf '%b\n' "services:\n chat:\n channel: <test channel>\n" > strauss.yml - uses: actions/cache@v3 id: cache-rust with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - name: Build & Unit Test Services run: docker compose --env-file .env -f strauss-build.debug.yml run build - name: Run Integration Tests run: | docker compose --env-file .env.runtime \ -f docker-compose.gha.yml \ up -d - name: Get Test Status run: | sleep 45 docker logs `docker container ls -a | grep chat-test | awk '{print $1}'` | grep "PASSED" && \ docker logs `docker container ls -a | grep redis-test | awk '{print $1}'` | grep "PASSED" - name: Inspect Dockers if: failure() run: | docker inspect `docker container ls -a | grep "strauss/chat" | awk '{print $1}'` docker inspect `docker container ls -a | grep "redis:7" | awk '{print $1}'` docker inspect `docker container ls -a | grep "chat-test" | awk '{print $1}'` docker inspect `docker container ls -a | grep "redis-test" | awk '{print $1}'` - name: Collect Docker Logs if: failure() uses: jwalton/gh-docker-logs@v2.2.1
内容的提问来源于stack exchange,提问作者squidpie
相关产品推荐
相关产品推荐

