Bitbucket 管道,我如何访问另一个容器?

Bitbucket pipelines, How could i access to another container?

我尝试使用 Bitbucket 管道为我的应用构建一些测试过程。

核心测试工具是Cypress。我想设置几个 docker 容器并执行 Cypress 来测试我的应用程序。

所以,我的 bitbucket-pipelines.yml 看起来像这样:

image: docker:stable

options:
  docker: true

pipelines:
  default:
    - step:
        name: Install PHP app
        caches:
          - composer
        script:
          - cp config/db.sample.php config/db.php
          - sed -i "s/[HOSTNAME]/db/" config/db.php
          - sed -i "s/[DB_NAME]/dbname/" config/db.php
          - sed -i "s/[DB_USER]/usr/" config/db.php
          - sed -i "s/[DB_USER_PASSWORD]/pass/" config/db.php
          - cp web/index.sample.php web/index.php
          - docker run --name db --restart always -e MYSQL_DATABASE=dbname -e MYSQL_USER=usr -e MYSQL_PASSWORD=pass -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d -p 3306:3306 mariadb
          - docker run --name web -v="$BITBUCKET_CLONE_DIR:/app" -d -p 8000:80 yiisoftware/yii2-php:5.6-apache
          - docker run --name e2e -v="$BITBUCKET_CLONE_DIR:/app" --workdir /app --tty -d cypress/base:10
          - docker exec -i web composer install
          - docker exec -i db mysql -uroot dbname < ./migrations/data/structure.sql
          - docker exec -i e2e yarn install
          - docker exec -i e2e yarn run cypress run --config baseUrl=http://web --project ./
        services:
          - docker
          - web
definitions:
  services:
    db:
      image: mariadb
    web:
      image: yiisoftware/yii2-php:5.6-apache
    e2e:
      image: cypress/base:10

总的来说,它几乎可以正常工作,但由于某种原因,我无法访问 e2e 容器内的 web 服务。我尝试使用容器名称,例如 http://web,但它不起作用。 这里有什么问题?

好的,看起来问题解决了。我决定创建基于 yiisoftware/yii2-php:5.6-apache 的新映像,并手动安装所有依赖项:

所以,之后我构建了一个图像并将其用作我的配置中的 Web 服务图像。 名为 e2e 的服务已被删除。 赛普拉斯测试执行看起来像这样:

docker exec -i web yarn run cypress run --config baseUrl=http://localhost:80 --project ./