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
的新映像,并手动安装所有依赖项:
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 ./
我尝试使用 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
的新映像,并手动安装所有依赖项:
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 ./