我正在尝试 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,
答案 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>