我想这是一个循环问题。
我对circleci很满意,但现在我遇到了一个问题,我不知道我做错了什么。
也许这件事很简单,但我看不到它的重要性。
简言之
我不能让集装箱在circleci上互相交谈。
问题
基本上我想做的是
服务器
容器和a
客户
容器,然后让他们互相交谈。
我在这里创建了一个简单的示例:
https://github.com/mRcSchwering/circleci-integration-test
这个
README.md
基本上解释了期望的结果。
我有一个
.circleci/config.yml
像这样:
version: 2
jobs:
build:
docker:
- image: docker:18.03.0-ce-git
steps:
- checkout
- setup_remote_docker
- run:
name: Install docker-compose
command: |
apk --update add py2-pip
/usr/bin/pip2 install docker-compose
docker-compose --version
- run:
name: Start Container
command: |
docker-compose up -d
docker-compose ps
- run:
name: Let client talk to server
command: |
docker-compose run client psql -h server -p 5432 -U postgres -c "\l"
在docker容器中,
docker-compose
,然后用于启动
server
和a
client
(此处为博士后)。在最后一步中,我告诉
客户
要查询
服务器
。但是,它无法找到
服务器
:
#!/bin/sh -eo pipefail
docker-compose run client psql -h server -p 5432 -U postgres -c "\l"
Starting project_server_1 ...
^@^@psql: could not connect to server: Connection refused
Is the server running on host "server" (172.18.0.2) and accepting
TCP/IP connections on port 5432?
Exited with code 2
文件
这个
docker-compose.yml
看起来像这样
version: '2'
services:
server:
image: postgres:9.5.12-alpine
networks:
- internal
expose:
- '5432'
client:
build:
context: .
networks:
- internal
depends_on:
- server
networks:
internal:
driver: bridge
其中
客户
是从这样的dockerfile构建的
FROM alpine:3.7
RUN apk --no-cache add postgresql-client && rm -rf /var/cache/apk/*
笔记
如果我在Linux上重复所有操作(docker中也有docker),它就会工作。
但我想有些事情在circleci上的效果完全不同。
我发现有人提到在circleci上联网和绑定挂载可能很棘手,但我没有找到任何可以帮助我的东西。
有这个
doc
但我想我已经在做了。
然后就有了
this project
似乎有人在circleci上成功地做了同样的事情。
但我不知道那里有什么不同。。。
无论如何,我非常感谢你的帮助。到目前为止,我已经放弃了这一点。
最好的
马克