首页 > 解决方案 > Bitbucket 管道,我如何访问另一个容器?

问题描述

我尝试使用 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

总体而言,它几乎可以正常工作,但由于某种原因,我无法访问容器web内的服务e2e。我尝试使用容器名称,例如http://web,但它不起作用。 在此处输入图像描述 这里有什么问题?

标签: dockeryii2cypressbitbucket-pipelines

解决方案


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

因此,之后我构建了一个图像并将其用作我的配置中的 Web 服务图像。调用的服务e2e已删除。赛普拉斯测试执行如下所示:

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

推荐阅读