沈天真
作者沈天真2020-07-27 22:28
售前支持, IPS

apache/couchdb:2.3.1 容器运行异常退出问题

字数 2959阅读 7504评论 0赞 0

最近在部署 Hyperledger Fabric 2.1 时,全局状态数据库需要用 CouchDB 2.3.1 ,从 hub.docker.com 上下载了官方的 apache/couchdb:2.3.1 镜像,但是运行之后,
发现 CouchDB 容器会报错,然后自动退出。报错如下:

经过定位,发现官方的 apache/couchdb:2.3.1 镜像是基于 Debian 9 制作的,现在实际的部署环境 host OS 是 Centos 7.6 ,二者内核版本相差较大,导致问题,决定重新基于 CentOS 7.6,制作 apache/couchdb:2.3.1镜像。步骤如下:

Step 1: 编译安装 OTP 22.0

ü 官网下载 http://www.erlang.org/downloads OTP 22.0

ü 安装依赖软件

yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC-devel libtool libtool-ltdl-devel automake autoconf wxGTK fop java-1.8

ü 解压 OTP 22.0,进入解压后目录

cd otp_src_22.0

./otp_build autoconf

./configure

make

make install

Erlang 默认安装路径为 /usr/local/lib/erlang

ü 测试是否安装成功,在终端执行erl命令

Step2: 编译安装 CouchDB 2.3.1

ü 安装依赖软件

yum install autoconf autoconf-archive automake curl-devel help2man js-devel libicu-devel libtool perl-Test-Harness patch

ü 下载CouchDB 2.3.1 ,解压缩,进入解压后目录

cd apache-couchdb-2.3.1

./configure

make release

编译好的bin文件都在路径 /home/apache-couchdb-2.3.1/rel/couchdb 下面,保存好这个文件夹下的所有文件。

ü 启动 CouchDB

./rel/couchdb/bin/couchdb

ü 验证CouchDB是否成功

curl http://127.0.0.1:5984/

Step3 编写 Dockerfile

ü 准备容器中需要用到的文件

其中

base image ppc64le/centos 7.6 可以从 hub.docker.com 下载

10-docker-default.ini / docker-entrypoint.sh / vm.args 可以从 x86 容器中拷贝

gosu / gosu.asc 从网上下载

lib64.tar.gz 是将 /usr/lib64/ 打包

将 rel/couchdb 放到 /opt/couchdb/ 下面

ü 编写好的 Dockerfile 如下。

[root@cn04 couchdb-image-build]# cat Dockerfile

FROM ppc64le/centos:7.6.1810

RUN yum install -y apt-transport-https ca-certificates wget curl tar

RUN groupadd -g 5984 -r couchdb

RUN useradd -u 5984 -d /opt/couchdb -g couchdb couchdb

COPY gosu /usr/local/bin/

COPY gosu.asc /usr/local/bin/

RUN gosu nobody true

ADD opt/couchdb/ /opt/couchdb/

RUN rm -rf /opt/couchdb/data /opt/couchdb/var/log; mkdir -p /opt/couchdb/data /opt/couchdb/var/log; chown couchdb:couchdb /opt/couchdb/data /opt/couchdb/var/log; chmod 777 /opt/couchdb/data /opt/couchdb/var/log; find /opt/couchdb \! \( -user couchdb -group couchdb \) -exec chown -f couchdb:couchdb '{}' +; find /opt/couchdb/etc -type d ! -perm 0755 -exec chmod -f 0755 '{}' +; find /opt/couchdb/etc -type f ! -perm 0644 -exec chmod -f 0644 '{}' +; chmod -f 0777 /opt/couchdb/etc/local.d; rm -rf /var/lib/apt/lists/*

COPY 10-docker-default.ini /opt/couchdb/etc/default.d/

COPY vm.args /opt/couchdb/etc/

COPY docker-entrypoint.sh /entrypoint.sh

RUN cd /

RUN chmod 777 entrypoint.sh

COPY lib64.tar.gz /usr/

RUN tar -zxvf /usr/lib64.tar.gz

RUN cd /

ENTRYPOINT ["./entrypoint.sh"]

VOLUME [/opt/couchdb/data]

EXPOSE 4369 5984 9100

CMD ["/opt/couchdb/bin/couchdb"]

运行 docker build . 命令,制作 docker image

Step 4:验证新镜像

使用命令:

docker run -p 5984:5984 -d --name couchdb -v /couchdb:/opt/couchdb/data -e COUCHDB_USER=admin -e COUCHDB_PASSWORD=password apache/couchdb:2.3.1

运行新镜像,不再报错退出。

参考链接:

https://my.oschina.net/zhenggao/blog/3104375

https://my.oschina.net/zhenggao/blog/3126697

https://github.com/apache/couchdb/issues/2044

https://github.com/apache/couchdb/issues/1857

https://github.com/apache/couchdb/issues/2047

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广