【问题标题】:Executing docker from terminal directly works fine but not when executed from inside a .sh script?从终端直接执行 docker 可以正常工作,但从 .sh 脚本内部执行时不行?
【发布时间】:2021-10-23 18:26:59
【问题描述】:

我在 ubuntu 20.04 我现在使用 sudo snap install docker 安装了 docker,当我直接从终端运行时(安装了 ubuntu 的终端)docker 命令它工作正常,但是当我使用 bash 从终端执行 .sh 脚本时。/ script.sh 或 ./script.sh 我收到错误 docker: command not found.

这是脚本:

#!/bin/bash
source $(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/env.sh

docker run -e "NODE_ENV=dev" -it --rm --name my-npm-2 -v $PROJECT_HOME/code:/var/www/html/code -w /var/www/html/code node:14 npm install

docker run -e "NODE_ENV=dev" -it --rm --name my-npm -v $PROJECT_HOME/code/web:/var/www/html/code/web -w /var/www/html/code/web node:14 npm install


$SCRIPT_HOME/buildjs_dev.sh

docker exec project_php sudo php -d memory_limit=-1 /usr/local/bin/composer install --working-dir=/var/www/html/code


docker exec project_php chown -R www-data:www-data /var/www/html/code/var/cache
docker exec project_php chown -R www-data:www-data /var/www/html/code/var/log

我一般是 linux 新手,我不知道问题出在脚本本身还是为什么它不能识别 docker?

【问题讨论】:

  • 那些npm installcomposer install 命令似乎通常应该在你的镜像的Dockerfile 中运行,而不是通过像docker exec 这样的调试接口。你有你的 Javascript 和 PHP 应用程序的 Dockerfiles,你可以docker build 吗?
  • 你能把这个命令echo $PATH放在#!/bin/bash之后和第一个docker命令之前并分享这两个输出。由于您的第一个源命令,您的 PATH 甚至可能会更改。

标签: bash docker ubuntu


【解决方案1】:

您在脚本开头定义了一个源文件,该文件可能会更改 PATH 变量。尝试通过注释源代码行或使用完整路径调用 docker 命令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 2018-06-19
    • 2020-01-02
    相关资源
    最近更新 更多