如何重启容器内的进程/使用原始的restart.py重新启动PhpStorm

时间:2017-03-21 10:38:35

标签: python docker phpstorm

我正在用PhpStorm创建一个图像(作为我构建便携式开发环境的努力的一部分)。除了PhpStorm无法重启之外,一切都运行得非常顺利。它使用bin/restart.py脚本用于此目的,在docker化时不起作用。

这是剧本的主体:

#!/usr/bin/env python

# Waits for the parent process to terminate, then executes specified commands.

import os
import signal
import sys
import time

if len(sys.argv) < 3:
    raise Exception('usage: restart.py <pid> <path> [optional command]')

signal.signal(signal.SIGHUP, signal.SIG_IGN)

pid = int(sys.argv[1])

while os.getppid() == pid:
    time.sleep(0.5) // ***

if len(sys.argv) > 3:
    to_launch = sys.argv[3:]
    os.spawnv(os.P_WAIT, to_launch[0], to_launch)

to_launch = ['/usr/bin/open', sys.argv[2]] if sys.platform == 'darwin' else [sys.argv[2]]
os.execv(to_launch[0], to_launch)

脚本运行到标有***的行 - 即在父进程退出后立即运行。

我尝试使用bash根进程以及dumb-initTINI进程运行PhpStorm,没有任何区别。

任何想法出了什么问题以及如何“解决”这个问题?是否有一些特定的信号必须在根进程中实现,或者它是docker的性质,它不允许这样的用途?

1 个答案:

答案 0 :(得分:0)

解决问题的最简单方法是重新启动容器,这是首先将进程放入容器的过程。