加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – Dockerfile CMD没有在容器启动时运行

发布时间:2020-12-16 03:28:43 所属栏目:安全 来源:网络整理
导读:所以我为一个项目编写了一个Dockerfile,我已经定义了一个CMD来启动容器以运行应用程序. Dockerfile看起来像 # create our mount folders and volumesENV MOUNTED_VOLUME_DIR=sitesRUN mkdir /$MOUNTED_VOLUME_DIRENV PATH=$MOUNTED_VOLUME_DIR/sbin:$MOUNTED

所以我为一个项目编写了一个Dockerfile,我已经定义了一个CMD来启动容器以运行应用程序.

Dockerfile看起来像

# create our mount folders and volumes
ENV MOUNTED_VOLUME_DIR=sites
RUN mkdir /$MOUNTED_VOLUME_DIR
ENV PATH=$MOUNTED_VOLUME_DIR/sbin:$MOUNTED_VOLUME_DIR/common/bin:$PATH
RUN chown -Rf www-data:www-data /$MOUNTED_VOLUME_DIR

# Mount folders
VOLUME ["/$MOUNTED_VOLUME_DIR/"]

# Expose Ports
EXPOSE 443

# add our environment variables to the server
ADD ./env /env

# Add entry point script
ADD ./start.sh /usr/bin/startContainer
RUN chmod 755 /usr/bin/startContainer

# define entrypoint command
CMD ["/bin/bash","/usr/bin/startContainer"]

start.sh脚本,做一些git的东西,如克隆正确的repo,设置环境变量,以及启动主管.

启动脚本以此开头

#!/bin/bash

now=$(date +"%T")
echo "Container Start Time : $now" >> /tmp/start.txt
/usr/bin/supervisord -n -c /etc/supervisord.conf

我像这样开始我的新容器

docker run -d -p expoPort:contPort -t -i -v /$MOUNTED_VOLUME_DIR/$PROJECT:/$MOUNTED_VOLUME_DIR $CONTAINER_ID /bin/bash

当我登录到容器时,我看到主管还没有启动,也没有nginx或php5-fpm.带有从startContainer脚本设置的时间戳的/tmp/start.txt文件不存在,表明它从未在Dockerfile中运行过CMD.

任何有关修复此问题的提示都会很棒

最佳答案
这个:

docker run -d -p expoPort:contPort -t -i -v /$MOUNTED_VOLUME_DIR/$PROJECT:/$MOUNTED_VOLUME_DIR $CONTAINER_ID /bin/bash

在实例化容器之后说’run / bin / bash’.例如.跳过CMD.

试试这个:

docker run -d -p expoPort:contPort -t -i -v /$MOUNTED_VOLUME_DIR/$PROJECT:/$MOUNTED_VOLUME_DIR $CONTAINER_ID 

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读