portus mysql_nginx+ssl+Portus+registry docker仓库

本文探讨了通过Nginx转发镜像导致Web页面加载延迟的问题,对比了不同推送方式的速度,并提供了修复config.yml和SSL配置的解决方案。重点在于提高Portus镜像显示速度和安全连接设置。

还存在的问题,如果通过nginx 转发推过去的镜像,在web页面显示比较慢,需要等定时任务发现了才能及时显示出来,如果通过b.p.xxx.cn:5000加端口push 的镜像就比较快显示出来。只影响到显示,不影响正常使用。

获取代码:git clone https://github.com/SUSE/Portus.git

cd Portus

vim docker-compose.yml

PS:   portus 这个项目更换镜像的话,就需要重新创建管理员账号,既然不是保存在MYSQL里面的,奇葩。(所以下次mysql也直接用docker启就可以了)

模板:

version: '2'

services:

portus:

build: .

image: opensuse/portus:development #默认不是这个镜像,默认的镜像有BUG作者说改成这个可以正常运行

command: bash /srv/Portus/examples/development/compose/init

environment:

- PORTUS_MACHINE_FQDN_VALUE=b.p.xxx.cn #域名,认证使用

- PORTUS_PUMA_HOST=0.0.0.0:3000

- PORTUS_DB_HOST=db

- PORTUS_DB_PASSWORD=portus

- RAILS_SERVE_STATIC_FILES=true

ports:

- 3000:3000

links:

- db

volumes:

- .:/srv/Portus #这几个项目共用一份代码,否者授权的时候有异常,会出现不用登录也能获取镜像

crono:

image: opensuse/portus:development

command: ./bin/crono

depends_on:

- portus

environment:

- PORTUS_MACHINE_FQDN_VALUE=b.p.xxx.cn

- PORTUS_DB_HOST=db #域名,认证使用

- PORTUS_DB_PASSWORD=portus

volumes:

- .:/srv/Portus

links:

- db

webpack:

image: kkarczmarczyk/node-yarn:6.9-slim

command: bash /srv/Portus/examples/development/compose/bootstrap-webpack

working_dir: /srv/Portus

volumes:

- .:/srv/Portus

db:

image: library/mariadb:10.0.23

environment:

MYSQL_ROOT_PASSWORD: portus

registry:

image: library/registry:2.3.1

environment:

REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /registry_data

REGISTRY_STORAGE_DELETE_ENABLED: "true"

REGISTRY_HTTP_ADDR: 0.0.0.0:5000

REGISTRY_HTTP_DEBUG_ADDR: 0.0.0.0:5001

REGISTRY_AUTH_TOKEN_ROOTCERTBUNDLE: /etc/docker/registry/portus.crt

REGISTRY_AUTH_TOKEN_REALM: http://b.p.xxx.cn:3000/v2/token

REGISTRY_AUTH_TOKEN_SERVICE: b.p.xxx.cn:5000

REGISTRY_AUTH_TOKEN_ISSUER: b.p.xxx.cn

REGISTRY_NOTIFICATIONS_ENDPOINTS: >

- name: portus

url: http://b.p.xxx.cn:3000/v2/webhooks/events

timeout: 2000ms

threshold: 5

backoff: 1s

volumes:

- /registry_data:/registry_data #这个目录是保存仓库镜像的,挂载出来永久保存

- ./examples/development/compose/portus.crt:/etc/docker/registry/portus.crt:ro #这个是Portus的密钥,交互用的

ports:

- 5000:5000

- 5001:5001

links:

- portus

我使用的这个版本有BUG,进过查看日志,发现同时还需要修改文件:

vim config/config.yml

206 machine_fqdn:

207 value: "b.p.xxx.cn" #改成自己的地址

然后docker-compose up 启动即可。

访问web页面: b.p.xxx.cn:3000

24850d27819e65cfdef7c523d245ec3b.png

需要填写仓库地址,两个都添加 b.p.xxx.cn:5000即可。

由于其他人访问需要经过https:下面给出 nginx + ssl 的配置

vim b.p.xxx.cn.conf

upstream klg-registry {

server registry:5000 weight=1;

}

server {

listen 443;

server_name b.p.xxx.cn;

ssl on;

ssl_certificate /nas/conf/tenginx/vhost/Nginx/1_b.p.xxx.cn_bundle.crt;

ssl_certificate_key /nas/conf/tenginx/vhost/Nginx/2_b.p.xxx.cn.key;

location /{

client_max_body_size 10000m;

proxy_pass http://klg-registry;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

}

access_log /var/log/tenginx/b.p.xxx.cn.log access;

}

我的实例:

version: '2'

services:

portus:

hostname: portus

image: r.p.xxx.cn/registry:portus2

environment:

- PORTUS_MACHINE_FQDN_VALUE=b.p.xxx.cn

- PORTUS_PUMA_HOST=0.0.0.0:3000

- PORTUS_DB_HOST=192.168.0.1

- PORTUS_DB_PASSWORD=portus

- RAILS_SERVE_STATIC_FILES=true

ports:

- 3000:3000

volumes:

- /opt/Portus:/srv/Portus

crono:

image: r.p.xxx.cn/registry:crono-new

depends_on:

- portus

environment:

- PORTUS_MACHINE_FQDN_VALUE=b.p.xxx.cn

- PORTUS_DB_HOST=192.168.0.1

- PORTUS_DB_PASSWORD=portus

volumes:

- /opt/Portus:/srv/Portus

webpack:

image: r.p.xxx.cn/registry:webpack-new

working_dir: /srv/Portus

volumes:

- /opt/Portus:/srv/Portus

registry:

image: r.p.xxx.cn/registry:registry2-new

hostname: registry

environment:

REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /registry_data

REGISTRY_STORAGE_DELETE_ENABLED: "true"

REGISTRY_HTTP_ADDR: 0.0.0.0:5000

REGISTRY_HTTP_DEBUG_ADDR: 0.0.0.0:5001

REGISTRY_AUTH_TOKEN_ROOTCERTBUNDLE: /etc/docker/registry/portus.crt

REGISTRY_AUTH_TOKEN_REALM: http://b.p.xxx.cn:3000/v2/token

REGISTRY_AUTH_TOKEN_SERVICE: b.p.xxx.cn:5000

REGISTRY_AUTH_TOKEN_ISSUER: b.p.xxx.cn

REGISTRY_NOTIFICATIONS_ENDPOINTS: >

- name: portus

url: http://b.p.xxx.cn:3000/v2/webhooks/events

timeout: 2000ms

threshold: 5

backoff: 1s

volumes:

- /registry_data:/registry_data

- /opt/Portus/examples/development/compose/portus.crt:/etc/docker/registry/portus.crt:ro

ports:

- 5000:5000

- 5001:5001

links:

- portus

内容概要:本文系统阐述了嵌入式功能安全领域的两大核心标准——IEC 61508与ISO 26262的完整体系,涵盖其定位、关系、技术要求及认证流程。IEC 61508作为通用工业功能安全基础标准,适用于PLC、机器人、轨道交通等系统,采用SIL等级划分;ISO 26262则是其在汽车行业的衍生标准,专用于车载电控单元(如BMS、ESP、自动驾驶控制器),采用ASIL等级评估。文章详细解析了两个标准在风险评估方法(如HARA与风险图法)、软硬件设计规范、失效分析、安全机制实现(如看门狗、CRC校验、冗余设计)等方面的异同,并提供了从需求分析到认证落地的全流程实施路径,包括安全生命周期管理、文档证据链构建及第三方认证机构介绍。; 适合人群:从事工业自动化或汽车电子领域嵌入式系统设计、功能安全开发与认证工作的工程师、项目经理及安全分析师,具备一定电子电气或软件开发背景的专业人员; 使用场景及目标:①指导企业开展符合IEC 61508或ISO 26262的功能安全产品设计与认证;②帮助研发团队理解SIL/ASIL等级判定逻辑与软硬件安全机制实现方式;③支持撰写安全需求文档、FMEDA报告及准备第三方审核材料; 阅读建议:此资源兼具理论体系与工程实践,建议结合具体项目场景对照标准条款进行研读,并重点关注安全生命周期各阶段的交付物要求与典型安全防护设计示例,以提升实际应用能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值