执行docker-compose down时会down掉另一个服务 (OD-436)
chenw opened 4 years ago

我有两个毫不相干的服务A和B,通过shell的方式执行ci,通过docker-compose部署服务,以下是我的ci内容 image.png image_2.png 这是我其中一个docker-compose.yml内容 image_3.png 当我执行A服务的ci时,会把我B服务给down掉,反过来也一样,我目前找不到问题的所在 image_4.png

  • chenw changed fields 4 years ago
    Name Previous Value Current Value
    Type
    Build Failure
    Discussion
  • Robin Shen commented 4 years ago

    这感觉跟OneDev没有太大关系,你试着直接在命令行下运行你的这些命令,问题可能也是一样的。

  • chenw commented 4 years ago

    我在我的服务器上重复了这些命令,并不会将我的B服务down掉

  • Robin Shen commented 4 years ago

    我对docker-compose不太熟悉,这里选项 -f docker-compose.yml是在当前目录中搜索这个文件吗?感觉down和up实际使用了两个不同的文件。如果不同时运行多个CI任务,这个问题还会出现吗?

  • Robin Shen commented 4 years ago

    也可以在执行down的前后打印docker-compose.yml文件的内容看看是否真的是期望的内容。

  • chenw commented 4 years ago

    我执行的是单个ci任务, -f docker-compose.yml 是指定配置文件,我也曾试过这样做,但是down执行前后的docker-compose.yml 都是我期望的内容,但它仍然停止了我另一个服务的运行 image_5.png

  • Robin Shen commented 4 years ago

    能不能创建一个示例项目来复现这个问题?否则很难帮助到你。

  • Robin Shen commented 4 years ago

    测试了两个简单的docker-compose项目,docker-compose默认使用当前目录名称作为项目名称。因为在onedev中CI运行在形如 /onedev-build/<job uuid>/workspace的目录中,所以对所有的项目docker-compose默认都会使用workspace作为项目名称,这样可能会导致不同项目之间的干扰。要解决这个问题,可以为docker-compose命令指定项目名称,比如:

    docker-compose -p @project_path@ down (老版本用@project_name@)
    
  • Robin Shen changed state to 'Closed' 4 years ago
    Previous Value Current Value
    Open
    Closed
  • chenw commented 4 years ago

    好的,万分感谢:pray:

issue 1/1
Type
Question
Priority
Normal
Assignee
Issue Votes (0)
Watchers (3)
Reference
OD-436
Please wait...
Connection lost or session expired, reload to recover
Page is in error, reload to recover