繁体   English   中英

Docker ENTRYPOINT 只执行初始化脚本中的第一个命令

[英]Docker ENTRYPOINT execute only first command in init script

我正在处理一个 Dockerfile,一切都按预期工作,但是当我尝试从创建的映像创建容器时,只有入口点脚本中的第一个命令被执行,其他命令没有被执行,我在一个容器中有几个服务,我我试图将它部署在基于 Linux 容器的 Azure 应用服务上,我相应地遵循了每一步,但我的其他服务没有启动。

在 Azure WebApps for Linux Container 中,Nginx 应该监听 80/8080 端口和 2222 上的 SSH,否则它会自动停止 webapp 内的容器,所以所有这些命令都应该被执行,所有服务应该自动启动。

我的 Dockerfile

FROM ubuntu:latest
WORKDIR /home/medrx
#add jdk 8
RUN apt-get update && \
    apt-get install -y openjdk-8-jdk && \
    apt-get install -y ant && \
    apt-get clean;
#fix key issues
RUN apt-get update && \
    apt-get install ca-certificates-java && \
    apt-get clean && \
    update-ca-certificates -f;
#set javahop
RUN export JAVA_HOME=/usr/bin/java
RUN export PATH=$PATH:$JAVA_HOME/bin
#installing and setting up zookeeper
COPY zookeeper/ /opt/zookeeper
RUN true
#install vim
RUN apt install -y vim
#installing elastic search
RUN apt-get install apt-transport-https
RUN apt install -y wget
RUN apt install -y curl
RUN wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.13.4-amd64.deb
RUN dpkg -i elasticsearch-7.13.4-amd64.deb
RUN update-rc.d elasticsearch defaults 95 10
# installing redis-server
RUN apt install -y  redis-server
#install nginx
RUN apt install -y nginx
COPY main.conf /etc/nginx/conf.d/
RUN true
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
# installing tomcat
COPY tomcat/ /opt/tomcat
RUN true
COPY ROOT/ /opt/tomcat/webapps/ROOT
RUN true
COPY service/ /opt/tomcat/webapps/service
RUN true
#copy front-end code
COPY html/ /var/www/html
RUN true
#install openssh server
RUN apt-get install -y --no-install-recommends openssh-server
RUN echo "root:Docker!" | chpasswd
COPY sshd_config /etc/ssh/
RUN true
#copy init script
COPY init.sh /home/medrx
RUN chmod 755 /home/medrx/init.sh
#expose ssh n nginx ports
EXPOSE 2222 80
#run entry script
ENTRYPOINT ["/home/medrx/init.sh"]

初始化文件

#!/bin/bash

nginx
service ssh start
service redis-server start
service elasticsearch start
/opt/zookeeper/bin/zkServer.sh start
/opt/tomcat/bin/startup.sh

这是第二天,我到处寻找,但不幸的是没有运气。 任何帮助/线索将不胜感激。 谢谢。

感谢大家的帮助,我正在发布我自己问题的答案,因为我自己解决了这个问题。 通过以并行方式执行命令解决了问题,我修改了init.sh有点像这样,事情开始工作。

#!/bin/bash
service ssh start &
service redis-server start &
service elasticsearch start &
/opt/zookeeper/bin/zkServer.sh start &
/opt/tomcat/bin/startup.sh &
service nginx start

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM