Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用于集成测试的docker中的Couchbase :使端口8092、8093、8094和8095可配置为能够使用docker的随机端口

用于集成测试的docker中的Couchbase :使端口8092、8093、8094和8095可配置为能够使用docker的随机端口
EN

Stack Overflow用户
提问于 2019-12-11 00:51:36
回答 1查看 371关注 0票数 5

我正在使用Couchbase java client SDK 2.7.9,在尝试运行自动化集成测试时遇到了一个问题。在这样的测试中,我们通常使用随机端口,以便能够在相同的Jenkins从设备上运行相同的东西(例如,使用docker )。

但是,使用客户端,我们可以指定许多自定义端口,但不能指定8092、8093、8094和8095。

流行的TestContainers模块还提到,这些端口必须在其Couchbase模块中保持静态:https://www.testcontainers.org/modules/databases/couchbase/ 1

显然,还可以在服务器级别更改这些端口。

示例:

Docker-compose.yml

代码语言:javascript
运行
AI代码解释
复制
version: '3.0'
services:
  rapid_test_cb:
    build:
      context: ""
      dockerfile: cb.docker
    ports:
      - "8091"
      - "8092"
      - "8093"
      - "11210"

docker镜像是‘couchbase:community-5.1.1’

在内部,端口是上面写入的端口,但在外部,它们是随机的。在客户机级,您可以设置bootstrapHttpDirectPort和bootstrapCarrierDirectPort,但显然8092和8093端口是从服务器端获取的(谁不知道哪个端口分配给了他)。

我想问您是否可以在客户端级更改这些端口,如果不能,请认真考虑添加该功能。

EN

回答 1

Stack Overflow用户

发布于 2019-12-11 00:51:36

因此,正如Couchbase team here所讨论的,

这真的是不可能的。所以我们找到了一种方法,使用Gradle的docker compose插件使其工作,但我想它可以在不同的情况下工作(TestContainer可以使用类似的系统)。

docker-compose.yml:

代码语言:javascript
运行
AI代码解释
复制
version: '3.0'
services:
  rapid_test_cb:
    build:
      context: ""
      dockerfile: cb.docker
    ports:
      - "${COUCHBASE_RANDOM_PORT_8091}:${COUCHBASE_RANDOM_PORT_8091}"
      - "${COUCHBASE_RANDOM_PORT_8092}:${COUCHBASE_RANDOM_PORT_8092}"
      - "${COUCHBASE_RANDOM_PORT_8093}:${COUCHBASE_RANDOM_PORT_8093}"
      - "${COUCHBASE_RANDOM_PORT_11210}:${COUCHBASE_RANDOM_PORT_11210}"
    environment:
      COUCHBASE_RANDOM_PORT_8091: ${COUCHBASE_RANDOM_PORT_8091}
      COUCHBASE_RANDOM_PORT_8092: ${COUCHBASE_RANDOM_PORT_8092}
      COUCHBASE_RANDOM_PORT_8093: ${COUCHBASE_RANDOM_PORT_8093}
      COUCHBASE_RANDOM_PORT_11210: ${COUCHBASE_RANDOM_PORT_11210}

cb.docker:

代码语言:javascript
运行
AI代码解释
复制
FROM couchbase:community-5.1.1
COPY configure-node.sh /opt/couchbase
#HEALTHCHECK --interval=5s --timeout=3s CMD curl --fail http://localhost:8091/pools || exit 1
RUN chmod u+x /opt/couchbase/configure-node.sh
RUN echo "{rest_port, 8091}.\n{query_port, 8093}.\n{memcached_port, 11210}." >> /opt/couchbase/etc/couchbase/static_config
CMD ["/opt/couchbase/configure-node.sh"]

configure-node.sh:

代码语言:javascript
运行
AI代码解释
复制
#!/bin/bash

poll() {
  # The argument supplied to the function is invoked using "$@", we check the return value with $?
  "$@"
  while [ $? -ne 0 ]
    do
      echo 'waiting for couchbase to start'
      sleep 1
      "$@"
  done
}

set -x
set -m
if [[ -n "${COUCHBASE_RANDOM_PORT_8092}" ]]; then
    sed -i "s|8092|${COUCHBASE_RANDOM_PORT_8092}|g" /opt/couchbase/etc/couchdb/default.d/capi.ini
fi
if [[ -n "${COUCHBASE_RANDOM_PORT_8091}" ]]; then
    sed -i "s|8091|${COUCHBASE_RANDOM_PORT_8091}|g" /opt/couchbase/etc/couchbase/static_config
fi
if [[ -n "${COUCHBASE_RANDOM_PORT_8093}" ]]; then
    sed -i "s|8093|${COUCHBASE_RANDOM_PORT_8093}|g" /opt/couchbase/etc/couchbase/static_config
fi
if [[ -n "${COUCHBASE_RANDOM_PORT_11210}" ]]; then
    sed -i "s|11210|${COUCHBASE_RANDOM_PORT_11210}|g" /opt/couchbase/etc/couchbase/static_config
fi

/entrypoint.sh couchbase-server &
poll curl -s localhost:${COUCHBASE_RANDOM_PORT_8091:-8091}

# Setup index and memory quota
curl -v -X POST http://127.0.0.1:${COUCHBASE_RANDOM_PORT_8091:-8091}/pools/default --noproxy '127.0.0.1' -d memoryQuota=300 -d indexMemoryQuota=300
# Setup services
curl -v http://127.0.0.1:${COUCHBASE_RANDOM_PORT_8091:-8091}/node/controller/setupServices --noproxy '127.0.0.1' -d services=kv%2Cn1ql%2Cindex
# Setup credentials
curl -v http://127.0.0.1:${COUCHBASE_RANDOM_PORT_8091:-8091}/settings/web --noproxy '127.0.0.1' -d port=${couchbase_random_port_8091:-8091} -d username=Administrator -d password=password
# Load the rapid_test bucket
curl -X POST -u Administrator:password -d name=rapid_test -d ramQuotaMB=128 --noproxy '127.0.0.1' -d authType=sasl -d saslPassword=password -d replicaNumber=0 -d flushEnabled=1 -v http://127.0.0.1:${COUCHBASE_RANDOM_PORT_8091:-8091}/pools/default/buckets

fg 1

Gradle's docker compose配置:

代码语言:javascript
运行
AI代码解释
复制
def findRandomOpenPortOnAllLocalInterfaces = {
    new ServerSocket(0).withCloseable { socket ->
        return socket.getLocalPort().intValue()
    }
}

dockerCompose {
    environment.put 'COUCHBASE_RANDOM_PORT_8091', findRandomOpenPortOnAllLocalInterfaces()
    environment.put 'COUCHBASE_RANDOM_PORT_8092', findRandomOpenPortOnAllLocalInterfaces()
    environment.put 'COUCHBASE_RANDOM_PORT_8093', findRandomOpenPortOnAllLocalInterfaces()
    environment.put 'COUCHBASE_RANDOM_PORT_11210', findRandomOpenPortOnAllLocalInterfaces()
}
integTest.doFirst {
    systemProperty 'com.couchbase.bootstrapHttpDirectPort', couchbase_random_port_8091
    systemProperty 'com.couchbase.bootstrapCarrierDirectPort', couchbase_random_port_11210
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59277436

复制
相关文章
通过ansible搭建 Redis Cluster 集群环境(Docker)
通过ansible实现自动化搭建 Redis Cluster 集群环境 Docker 搭建Redis 集群
lovelife110
2021/12/08
9060
开源云真机平台-Sonic应用实践
Sonic是一款开源、支持分布式部署、在线自动化测试的私有云真机平台。偶然接触到这个平台是源于虫师的一篇公众号文章《基于Linux 部署 Sonic》,于是结合文章内容和官网尝试搭建了一套,并试用了一番,直到现在也一直在用。后来陆续也加了作者的微信号、粉丝群,对于部署和使用过程中的一些问题和建议,作者和粉丝群中的小伙伴都能及时给予解答,整体体验很不错,遂决定写一篇总结分享。
大刚测试开发实战
2022/11/14
4.7K0
开源云真机平台-Sonic应用实践
红队内网渗透工具(-甲方自查工具)
RequestTemplate是一款两端并用的红队渗透工具以及甲方自查工具,其在内网渗透过程中有着不可替代的作用。
释然IT杂谈
2023/08/18
4290
红队内网渗透工具(-甲方自查工具)
Sonic云真机测试平台在windows的部署及使用
https://www.docker.com/products/docker-desktop
程序媛淼淼
2022/09/01
3K0
Sonic云真机测试平台在windows的部署及使用
Sonic云真机测试平台在windows的部署及使用
https://www.docker.com/products/docker-desktop
测试开发社区
2022/06/08
3.1K0
Sonic云真机测试平台在windows的部署及使用
Docker容器端口配置 原
上面的-p 80,将在docker主机上随机打开一个端口(可利用docker port命令查看,或者docker ps也能看到,这里是32768)映射到容器中的80端口上。
拓荒者
2019/03/11
2.5K0
mysql docker 端口号_如何修改 docker 容器中 mysql 的端口号
修改 docker 中 MySQL 配置文件,在 mysqld 项目下新增 port=3307 配置
全栈程序员站长
2022/07/28
16.5K0
修改Docker中nginx容器默认的端口号配置[通俗易懂]
一般来说,nginx默认使用的是80端口号,但是狗血的是服务器上80端口号被占用了,而且使用80端口号的服务还不能停,这就要换端口号了。
全栈程序员站长
2022/10/03
7.1K0
修改Docker中nginx容器默认的端口号配置[通俗易懂]
docker的端口映射_docker swarm 网络
docker run -itd -p 宿主机ip:宿主机端口:容器端口 –name 容器名 镜像名 /bin/bash
全栈程序员站长
2022/11/10
9950
docker的端口映射_docker swarm 网络
docker搭建环境如何配置端口
在上面一篇文章中,分享过如何搭建和使用dnmp,今天分享如何修改dnmp中PHP容器的端口映射功能。
兔云小新LM
2020/09/24
2.9K1
CoreOS配置Docker 2375端口 原
需要让docker启动时在tcp端口2375上监听api服务 vi /etc/systemd/system/docker-tcp.socket 配置一下内容 [Unit] Description=Docker Socket for the API [Socket] ListenStream=2375 BindIPv6Only=both Service=docker.service [Install] WantedBy=sockets.target 然后再重启docker服务 systemctl e
bdcn
2018/09/12
2.1K0
c1000k TCP 连接上限测试1
指定一个空闲端口,服务端会顺次打开100个端口进行监听,并且在当前terminal挂起
franket
2022/04/23
4690
【DB宝46】NoSQL数据库之CouchBase简介、集群搭建、XDCR同步及备份恢复
CouchBase是一款开源的、分布式的、面向文档的NoSQL数据库,主要用于分布式缓存和数据存储领域。能够通过manage cache提供快速的亚毫米级别的k-v存储操作,并且提供快速的查询和其功能强大的能够指定SQL-like查询的查询引擎。Couchbase是一个较新的、发展迅速的nosql数据库技术。2014年,viber宣布使用couchbase替换mongodb,以适应10亿级的用户量,目前,couchbase已大量运用于生产环境,国内使用的公司主要有新浪,腾讯等。
AiDBA宝典
2021/04/06
2.4K0
【DB宝46】NoSQL数据库之CouchBase简介、集群搭建、XDCR同步及备份恢复
docker端口映射原理_docker修改端口映射
ERROR: ZONE_CONFLICT: ‘docker0’ already bound to a zone
全栈程序员站长
2022/11/02
2.3K0
【Docker】Asp.net core在docker容器中的端口问题
还记得【One by one系列】一步步学习docker(三)——实战部署dotnetcore中遇到的问题么?容器内部启动始终是80端口,并不由命令左右。
DDGarfield
2022/06/23
2.4K0
【DB宝46】NoSQL数据库之CouchBase简介、集群搭建、XDCR同步及备份恢复
CouchBase是一款开源的、分布式的、面向文档的NoSQL数据库,主要用于分布式缓存和数据存储领域。能够通过manage cache提供快速的亚毫米级别的k-v存储操作,并且提供快速的查询和其功能强大的能够指定SQL-like查询的查询引擎。Couchbase是一个较新的、发展迅速的nosql数据库技术。2014年,viber宣布使用couchbase替换mongodb,以适应10亿级的用户量,目前,couchbase已大量运用于生产环境,国内使用的公司主要有新浪,腾讯等。
AiDBA宝典
2021/05/06
2.7K0
【DB宝46】NoSQL数据库之CouchBase简介、集群搭建、XDCR同步及备份恢复
docker容器ip和端口分配_docker iptables failed
当我们用docker新启动一个容器时,有时候想要查看容器的ip,用ip addr命令,却提示找不到命令:
全栈程序员站长
2022/09/19
1.4K0
docker容器ip和端口分配_docker iptables failed
docker端口映射后访问不了_docker暴露多个端口
1、查看防火墙状态( systemctl status firewalld ),防火墙是关闭的
全栈程序员站长
2022/11/02
2.2K0
dockerfile 端口映射_docker 映射端口
HDIS-Framework是一个基于SpringBoot、Kubernetes、阿里云服务,编写的一个用于支撑微服务的极速开发框架。
全栈程序员站长
2022/11/02
7.6K0
dockerfile 端口映射_docker 映射端口
docker设置端口2375
在Windows 7 64位上,采用Vmware workstation 12安装了CenOS7.5 64位。
全栈程序员站长
2022/09/05
2.3K0
docker设置端口2375

相似问题

如何引用8092以外的Couchbase API端口

10

通过Node.js API [Docker]配置Couchbase连接端口

12

Docker使用已配置的端口启动

32

Docker公开用于Flask的端口

37

docker.compose.yml中的端口配置为双行

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档