docker - 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
,但它不起作用。
这里有什么问题?
解决方案
好的,看起来问题解决了。我决定创建一个基于 的新镜像,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
已删除。赛普拉斯测试执行如下所示:
docker exec -i web yarn run cypress run --config baseUrl=http://localhost:80 --project ./
推荐阅读
- android - 具有引用格式字符串的复数
- rotation - Halcon - 旋转姿势
- javascript - 根据另一个数组中的值从数组中删除对象
- powershell - 外壳 | 导入 .csv 文件
- pytorch - “加载共享库时出错:libnvinfer.so.7:无法打开共享对象文件:没有这样的文件或目录”运行 TRTorch 示例时
- debugging - 使用 OpenOCD 调试 STM32F767 - 未知设备 ID 问题
- python - 通过烧瓶渲染模板传递给 html 文件的文本格式不正确
- angular - 角度重新加载组件不起作用
- react-native - 如何在 react native 中获取设备的应用程序、图像和视频列表?
- qt - 为 Raspberry Pi 4 交叉编译 QtWebEngine