让pdb与docker一起使用

时间:2015-09-04 17:32:43

标签: docker pdb

我正在尝试 pdb 使用 docker

我们刚刚开始在开发中使用docker。我在docker

中运行python脚本

我可以附加到泊坞容器:

send

我可以拖尾输出

type Mailer struct{
    Messages chan Message
}

func (m *Mailer) send() {
    for message := range m.Messages {
        fmt.Printf("Sending email to:`%s`\nSubject: %s\n%s\n\n", message.To, message.Subject, message.Body)
    }
}

var mailer *Mailer

func Index(w http.ResponseWriter, r *http.Request) {
    m := Message{"email@example.com", fmt.Sprintf("visited `%s`", r.URL.Path[1:]), "Lorem ipsum"}
    mailer.Messages <- m

    fmt.Fprintf(w, "Sent out email with subject line `%s`\n", m.Subject)
}


func main() {
    mailer = &Mailer{
        // buffer up to 100 message to be sent before blocking
        Messages: make(chan Message, 100),
    }
    // start the mailer send loop
    go mailer.send()

    ...

I've read this但我没有使用图。

我可以看到代码命中了断点但我无法与PDB进行交互。

Docker版本1.7.1,

2 个答案:

答案 0 :(得分:4)

如果您使用的是docker compose,则需要执行以下操作。

步骤1.在yml文件中添加以下内容

stdin_open: true
tty: true

这将启用交互模式并附加标准输入。这相当于-it模式。

第2步。

docker attach <generated_instance_id>

您现在将获得pdb shell

答案 1 :(得分:2)

启动原始docker容器时,我没有使用-i标志。 一定要使用

docker run -it <job>