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

时间:2019-06-28 13:17:56

标签: docker yii2 cypress bitbucket-pipelines

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

核心测试工具是赛普拉斯。我想设置几个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,但是它不起作用。 enter image description here 怎么了?

1 个答案:

答案 0 :(得分:0)

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

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

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