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

标签 docker yii2 cypress bitbucket-pipelines

我尝试使用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,但是它不起作用。
enter image description here
怎么了

最佳答案

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

  • https://docs.cypress.io/guides/guides/continuous-integration.html#Dependencies
  • https://github.com/nodesource/distributions/blob/master/README.md

  • 因此,在那之后,我构建了一个镜像并将其用作配置中的Web服务镜像。
    名为e2e的服务已删除。
    Cypress 的测试执行如下所示:
    docker exec -i web yarn run cypress run --config baseUrl=http://localhost:80 --project ./
    

    关于docker - Bitbucket管道,我如何访问另一个容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56807689/

    相关文章:

    php - 使用 yii2-widget-depdrop 扩展找不到 Yii2 app\controllers\response

    docker - 没有可用于调度 Pod 的节点 - 在没有 VM 的情况下本地运行 Kubernetes

    python -/tmp/pip-install-xtrlkujj/pyaudio/中的 “python setup.py egg_info”命令失败,错误代码为1

    php - 调整 Yii2 表单中的文本框大小

    yii2 - 配置 Yii2 中的多个用户身份

    vue.js - 使用 Vue 和 Cypress 进行测试时出现 Mirage 未定义错误(未定义路由)

    windows - 启用 WSL2 的 Docker Desktop 无法在 Windows 10 中启动

    docker - 在 Gitlab 运行器中的 Docker 容器内运行测试命令时出现问题

    cypress - cy.contains 与正则表达式匹配吗?

    javascript - 使用 Cypress 验证元素是否在视口(viewport)内