Vì vậy, tôi lỏng lẻo làm theo Bài đăng trên blog của Robert Jensen để tạo ra một đăng ký bến cảng cho phòng thí nghiệm nhà tôi.
Tôi lưu trữ nhiều dịch vụ trên một máy và vì vậy tôi có traefik chạy rất đẹp dưới dạng proxy ngược cho tất cả các bộ chứa docker dựa trên web của mình.
traefik docker-compose của tôi trông như thế này:
phiên bản: '3.7'
dịch vụ:
traefik:
hình ảnh: traefik: mới nhất
container_name: traefik
khởi động lại: trừ khi dừng
cổng:
- 0.0.0.0:80:80
- 0.0.0.0:443:443
mạng:
- Ủy quyền
khối lượng:
- ./acme.json:/acme.json
- /var/run/docker.sock:/var/run/docker.sock
chỉ huy:
- --api.dashboard=false
- --entryPoints.http.address=:80
- --entrypoints.http.http.redirections.entrypoint.to=https
- --entryPoints.https.address=:443
- --entrypoints.https.http.tls.certresolver=letsencrypt
- [email protected]
- --certificatesresolvers.letsencrypt.acme.storage=acme.json
- --certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=http
- --providers.docker=true
- --providers.docker.network=proxy
- --providers.docker.exposedbydefault=false
- --providers.docker.watch=true
mạng:
Ủy quyền:
bên ngoài: đúng
Sau đó, bến cảng của tôi.yml:
tên máy chủ: registry.example.net
http:
cổng: 1080
URL tương đối: đúng
bên ngoài_url: https://registry.example.net:433
harbour_admin_password: Harbor12345
cơ sở dữ liệu:
mật khẩu: root123
max_idle_conns: 100
max_open_conns: 900
data_volume: /srv/harbor/data
tầm thường:
bỏ qua_unfixed: sai
bỏ qua_update: sai
không an toàn: sai
dịch vụ việc làm:
max_job_workers: 10
thông báo:
webhook_job_max_retry: 10
đồ thị:
tuyệt đối_url: bị vô hiệu hóa
nhật ký:
cấp độ: thông tin
địa phương:
xoay_đếm: 50
rotate_size: 200M
vị trí: /srv/bến cảng/log
_phiên bản: 2.4.0
Ủy quyền:
http Proxy:
https_proxy:
không có proxy:
các thành phần:
- cốt lõi
- dịch vụ việc làm
- tầm thường
Và một docker-compose.override.yml cho bến cảng (để thiết lập traefik):
phiên bản: '2.3'
dịch vụ:
Ủy quyền:
mạng:
- Ủy quyền
nhãn:
- traefik.enable=true
- "traefik.http.routers.harbor.rule=Host(`registry.example.net`)"
- traefik.http.routers.harbor.service=harbor
- traefik.http.services.harbor.loadbalancer.server.url="http://registry.kapdee.net:8080"
mạng:
Hải cảng:
bên ngoài: sai
Ủy quyền:
bên ngoài: đúng
Tôi cũng đã xóa tất cả các dòng như proxy_set_header X-Forwarded-Proto $x_forwarded_proto;
từ /srv/harbor/common/config/nginx/nginx.conf
theo gợi ý của Robert.
Vì vậy, tất cả các giao diện web, v.v. đều hoạt động hoàn hảo.
Tôi cũng đã chạy các lệnh được mô tả đây để kiểm tra giao diện v2. Lệnh thứ hai cung cấp một url là https.
Vấn đề tôi gặp phải là khi tôi cố gắng đăng nhập docker https://registry.example.net -u admin -p Harbor12345
, Tôi nhận được lỗi sau đây:
Phản hồi lỗi từ daemon: Nhận "https://registry.example.net/v2/": Nhận "https://registry.example.net:433/service/token?account=admin&client_id=docker&offline_token=true&service=harbor-registry ": net/http: yêu cầu bị hủy trong khi chờ kết nối (Client.Timeout đã vượt quá trong khi chờ tiêu đề)
Cả đời tôi không thể tìm ra cách để nó hoạt động ngay bây giờ, cũng như các bước khắc phục sự cố để đạt được điều đó.
Trợ giúp được đánh giá rất cao.
(Chúng tôi cũng cần một thẻ traefik và cảng)