我正在尝试从 dockerfile 安装我的 ejabberd,映像正在成功构建,但是当我点击运行命令容器时会立即退出



运行容器后,它会立即退出。 我应该如何保持这个容器和 ejabberd 的运行? 我应该在 dockerfile 中进行哪些更改?
任何帮助,不胜感激。

这是我的码头工人文件:

FROM ubuntu:16.04
RUN set -x && 
apt-get update && 
apt-get install -y 
make 
automake 
gcc 
g++
libexpat1 
libexpat1-dev 
libyaml-0-2 
libyaml-dev 
erlang 
openssl 
zlib1g 
zlib1g-dev 
libpam0g 
libtext-iconv-perl 
libssl-dev
git 
postgresql postgresql-contrib     
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 && 
echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" |  tee /etc/apt/sources.list.d/mongodb-org-3.0.list 
apt-get install mongodb-org
RUN mkdir -p /root/.ssh
ADD /.ssh/id_rsa /root/.ssh/id_rsa
RUN chmod 600 /root/.ssh/id_rsa

RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan bitbucket.org >> /root/.ssh/known_hosts
RUN git clone git@bitbucket.org:sample.git
RUN cp -a /sample/. /opt/ejabberd/
RUN  cd /opt/ejabberd && ./autogen.sh && ./configure --enable-user=root --enable-mysql && make && make install
EXPOSE 5280
RUN cd /opt/ejabberd/
RUN chmod +x /opt/ejabberd/run.sh
ENTRYPOINT ["/opt/ejabberd/run.sh"]

这是run.sh

#!/bin/bash
set -e
cd /opt/ejabberd
exec sbin/ejabberdctl start "$@"

我的构建命令是:

sudo docker build --no-cache=true -t sample:ejabb .

我的运行命令是:

sudo docker run -d -p 5280:5280 -p 5269:5269 -p 5222:5222 -p 4560:4560 sample:ejabb

谢谢。

已解决。正如 https://stackoverflow.com/users/147356/larsks?tab=profile 所建议的那样,ejabberd进程正在进入后台,因此容器正在关闭。

所以"sbin/ejabberdctl foreground"做到了。

谢谢。