Yearning icon indicating copy to clipboard operation
Yearning copied to clipboard

Dockerfile的CMD参数出错,导致无法使用docker-compose启动

Open Linzhuosheng opened this issue 4 years ago • 8 comments

To Reproduce 如何复现

使用docker compose启动时,会报以下截图的错误,报ERROR: flag provided but not defined: -m ,错误原因是Yearning启动脚本方法名字发生变更 。

Expected behavior 期望的结果

希望修改Docker file以及更新官方说明文档

Screenshots 截图

image

Additional context 其他 Add any other context about the problem here.

Linzhuosheng avatar Mar 11 '21 09:03 Linzhuosheng

我也遇到这个问题,请问怎么解决呀

lushenao avatar Mar 15 '21 08:03 lushenao

我也遇到这个问题,请问怎么解决呀 不使用docker直接使用脚本的话 就先 ./Yearning install 再 ./Yearning run 如果要使用容器部署的话 ,修改dockerfile文件,把 CMD["-m","-s"]修改为 image

Linzhuosheng avatar Mar 16 '21 02:03 Linzhuosheng

我也遇到这个问题,请问怎么解决呀 不使用docker直接使用脚本的话 就先 ./Yearning install 再 ./Yearning run 如果要使用容器部署的话 ,修改dockerfile文件,把 CMD["-m","-s"]修改为 image

没用的。你看Dockfile的文档,每个 Dockerfile 只能有一条 CMD 命令。如果指定了多条命令,只有最后一条会被执行。

fire180 avatar Apr 01 '21 03:04 fire180

对的,还是没解决,楼上说的可解决

Keanhua avatar Apr 09 '21 09:04 Keanhua

目前可以通过手动跑来运行:

docker run --name yearning  --rm -v $PWD/conf.toml:/opt/conf.toml  yearning:latest install 
docker run --name yearning -v $PWD/conf.toml:/opt/conf.toml  yearning:latest run

不清楚多次执行install会不会删除之前的数据,如果多次执行install没有影响,则比较好办

hanlyjiang avatar Apr 09 '21 10:04 hanlyjiang

目前可以通过手动跑来运行:

docker run --name yearning  --rm -v $PWD/conf.toml:/opt/conf.toml  yearning:latest install 
docker run --name yearning -v $PWD/conf.toml:/opt/conf.toml  yearning:latest run

不清楚多次执行install会不会删除之前的数据,如果多次执行install没有影响,则比较好办 多次install不会删除,程序运行时会先检测是否已经初始化过,如果是则会跳过。尽量还是不要多次install

pidouzi avatar Apr 10 '21 17:04 pidouzi

目前可以通过手动跑来运行:

docker run --name yearning  --rm -v $PWD/conf.toml:/opt/conf.toml  yearning:latest install 
docker run --name yearning -v $PWD/conf.toml:/opt/conf.toml  yearning:latest run

不清楚多次执行install会不会删除之前的数据,如果多次执行install没有影响,则比较好办 多次install不会删除,程序运行时会先检测是否已经初始化过,如果是则会跳过。尽量还是不要多次install

写了个简单的入口脚本处理了一下,放在这里 https://github.com/hanlyjiang/Yearning/tree/bugfix-release-2.3.2.1 ,供参考。

#!/bin/sh

flag_file="/opt/install_flag"

if [ -f $flag_file ]; then
  echo "找到install标记文件"
  read -r install_flag <"$flag_file"
  installed=$(echo $install_flag | awk -F "=" '{print $2}')
  echo "是否已经安装? $installed"
  if [ "false" = "$installed" ]; then
    echo "需要安装,开始安装... /opt/Yearning install"
    /opt/Yearning install
    if [ $? = 0 ];then
      echo "安装成功"
      echo "installed=true">$flag_file
    fi
  elif [ "true" = "$installed" ]; then
    echo "已经安装,直接运行..."
  fi
else
  echo "未找到/opt/install_flag文件,不执行安装"
fi

echo "开始运行 Yearning run"
exec /opt/Yearning run

还是希望作者能够从源码侧修复;

hanlyjiang avatar Apr 12 '21 03:04 hanlyjiang

把 Dockerfile 改成下面这个即可 image

scenerycm avatar May 17 '21 09:05 scenerycm