bash - Shell脚本进入Docker容器并执行命令,最终退出

标签 bash shell docker

我想编写一个 shell 脚本,该脚本进入正在运行的 docker 容器,编辑特定文件然后退出它。

我最初的尝试是这样的——

  • 创建 run.sh 文件。
  • 将以下命令粘贴到其中
    docker exec -it container1 bash
    sed -i -e 's/false/true/g' /opt/data_dir/gs.xml
    exit
    
  • 运行脚本——
    bash ./run.sh
    

  • 但是,一旦脚本进入 container1,它就会进入它的 bash 终端。一旦我进入容器,整个脚本似乎就会中断,留下包含脚本的父容器。

    最佳答案

    通过使用下面的一段代码解决了这个问题

    myHostName="$(hostname)"
    docker exec -i -e VAR=${myHostName} root_reverse-proxy_1 bash <<'EOF'
    sed -i -e "s/ServerName .*/ServerName $VAR/" /etc/httpd/conf.d/vhosts.conf
    echo -e "\n Updated /etc/httpd/conf.d/vhosts.conf $VAR \n"
    exit
    

    关于bash - Shell脚本进入Docker容器并执行命令,最终退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51405065/

    相关文章:

    docker - 私有(private)注册表推送失败: server gave HTTP response to HTTPS client

    linux - 确定 Web 服务器的根文件夹

    bash - shell脚本中的YYYY-MM-DD格式日期

    linux - 检查 Web 应用程序是否已启动

    bash 脚本使用单词指示符和单词修饰符来自动化 wget tar cd

    docker - docker pull等效于kubectl

    macos - OSX 永久设置 PYTHONPATH

    node.js - git bash 找不到模块 npm-cli.js

    linux - 将 java 版本结果附加到上面的行?

    docker - docker ENTRYPOINT 上的多个命令