我最近发现了Docker,并将其Usenet服务转移到了它。我已经在Docker上运行了声纳,雷达,NZBget和NZBhydra,但是在服务之间传递文件时遇到了问题。我正在使用nginx反向代理来映射到每个服务。
当我尝试从NZBhydra抓取nzb时,它失败了,因为它试图映射到http://nzbhydra:7891/nzbhydra/foo.nzb?ap=bar,这显然失败了,因为http://nzbhydra:7891不是有效地址。
Dockerfile:
FROM nginx
RUN rm /etc/nginx/conf.d/default.conf
COPY default.conf /etc/nginx/conf.d/
default.conf:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /sonarr {
proxy_pass http://sonarr:8989;
}
location /radarr {
proxy_pass http://radarr:8585;
}
location /nzbhydra {
proxy_pass http://nzbhydra:7891;
}
location /nzbget {
proxy_pass http://nzbget:6789;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
我希望该网址映射到http://localhost:7891/nzbhydra/foo.nzb?ap=bar或http://nzbhydra/nzbhydra/foo.nzb?ap=bar
答案 0 :(得分:0)
正如您在对问题的评论中所说的那样,您使用import tkinter as tk
from PIL import Image, ImageTk
WIDTH, HEIGHT = 900, 900
topx, topy, botx, boty = 0, 0, 0, 0
rect_id = None
path = "Book.jpg"
def get_mouse_posn(event):
global topy, topx
topx, topy = event.x, event.y
def update_sel_rect(event):
global rect_id
global topy, topx, botx, boty
botx, boty = event.x, event.y
canvas.coords(rect_id, topx, topy, botx, boty) # Update selection rect.
window = tk.Tk()
window.title("Select Area")
window.geometry('%sx%s' % (WIDTH, HEIGHT))
window.configure(background='grey')
img = ImageTk.PhotoImage(Image.open(path))
canvas = tk.Canvas(window, width=img.width(), height=img.height(),
borderwidth=0, highlightthickness=0)
canvas.pack(expand=True)
canvas.img = img # Keep reference in case this code is put into a function.
canvas.create_image(0, 0, image=img, anchor=tk.NW)
# Create selection rectangle (invisible since corner points are equal).
rect_id = canvas.create_rectangle(topx, topy, topx, topy,
dash=(2,2), fill='', outline='white')
canvas.bind('<Button-1>', get_mouse_posn)
canvas.bind('<B1-Motion>', update_sel_rect)
window.mainloop()
运行容器。
在全部运行它们之后,请查看docker start <hash>
-此命令列出了所有网络。您应该拥有与容器相同数量的网络-因为docker network ls
创建了一个唯一的(分离的)网络并将容器放置在其中。因此,您无法交流。
要解决此问题,您必须将容器放在一个网络中。为此,您可以将服务放入docker start
并用docker-compose.yml
运行它们。为此,请阅读文档的Docker Compose部分。
或者您可以手动将已经存在且正在运行的容器放入同一网络。为此,您可以使用docker network connect
,例如docker-compose up
。
通常,要掌握所有方面,我的回答将非常长,因此,我向您提供了这两个技巧。我希望朝正确的方向轻推就足够了。我强烈建议您阅读文档中的更多内容。