当尝试使用测试容器运行 bitbucket 管道时,我遇到此错误
无法启动容器 java.lang.IllegalStateException:Container
没有正确启动。
没有其他问题,但也许与 Binds 有关?日志:
"HostConfig":"绑定":["/opt/atlassian/pipelines/agent/build/src/test/resources:/opt/atlassian/pipelines/agent/build/src/test/resources:rw","/var/run/docker.sock:/docker.sock:rw"]
管道配置:
pipelines:
pull-requests:
'**':
- step:
name: Integration tests
caches:
- maven
after-script:
- pipe: atlassian/checkstyle-report:0.3.0
script:
- export TESTCONTAINERS_RYUK_DISABLED=true
- export TESTCONTAINERS_CHECKS_DISABLE=true
- mvn -B verify -Dsurefire.skip=true --file pom.xml
services:
- docker
- step:
name: Build
caches:
- maven
after-script:
- pipe: atlassian/checkstyle-report:0.3.0
script:
- mvn -B package --file pom.xml -DskipTests
services:
- docker
definitions:
services:
docker:
memory: 3072
docker-compose.yml
services:
db:
image: postgres:14.1
ports:
- "5432:5432"
expose:
- "5432"
networks:
- example-network
environment:
- "POSTGRES_USER=${DB_USER:-postgres}"
- "POSTGRES_PASSWORD=${DB_PASSWORD:-postgres}"
- "POSTGRES_DB=${DB_SCHEMA:-testdb}"
logging:
driver: json-file
options:
mode: "non-blocking"
networks:
example-network:
driver: bridge
docker 组成容器:
DOCKER_COMPOSE_CONTAINER =
new DockerComposeContainer(new File("src/test/resources/docker-compose.yml"))
.withExposedService(SERVICE_NAME, SERVICE_PORT,
Wait.forListeningPort());
DOCKER_COMPOSE_CONTAINER.start();
我也尝试过不使用 TESTCONTAINERS_CHECKS_DISABLE=true 但出现类似错误
状态 403:{“message”:“插件管道拒绝授权:-v 仅支持 $BITBUCKET_CLONE_DIR 及其子目录”}
有人可以帮忙吗?
正如您收到的错误消息所解释的,Bitbucket Pipelines Docker 引擎只允许安装项目源的子目录。
我不知道为什么你打算挂载 /var/run/docker.sock 或者你是否可以避免它,但 Bitbucket 通常将 Docker 引擎转发到生成的容器的方式,例如在管道中,是通过设置
...
--env=DOCKER_HOST="tcp://host.docker.internal:2375" \
--add-host="host.docker.internal:$BITBUCKET_DOCKER_HOST_INTERNAL" \
...
所以可能需要模仿。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)