首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以在同一个系统上部署一个容器注册中心并托管一个HTTPS the服务器吗?

问我可以在同一个系统上部署一个容器注册中心并托管一个HTTPS the服务器吗?
EN

Stack Overflow用户
提问于 2022-05-25 07:10:04
回答 1查看 52关注 0票数 0

我正在运行一个HTTPS网络服务器。在同一主机上,我希望运行一个码头容器注册表。

根据本教程,我需要运行以下命令:

代码语言:javascript
复制
 docker run -d \
  --restart=always \
  --name registry \
  -v "$(pwd)"/certs:/certs \
  -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
  -p 443:443 \
  registry:2

但是我的nginx服务器已经有443个绑定了。所以我想我不能用这个港口运行集装箱注册中心。我在这里有什么选择?我可以用443以外的东西吗?

EN

回答 1

Stack Overflow用户

发布于 2022-05-25 08:00:10

您可以使用Nginx作为proxyserver,并具有指向两个不同服务的(子)域(Webserver和)

步骤1:设置域名

  • DNS: registry.mycompany.com到主机的IP地址
  • DNS:www.mycompany.com到主机的IP地址

步骤2:配置Nginx作为proxyserver

Nginx sites.conf

代码语言:javascript
复制
# Main Server
server {
    listen 80 default_server;
    server_name _;
    return 301 https://$host$request_uri;
}



# The Webserver
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name www.mycompany.com;

    ssl_certificate         /etc/ssl/private/star_mycompany_com.chained.crt;
    ssl_certificate_key     /etc/ssl/private/star_mycompany_com.key;

    access_log  /var/log/nginx/webserver_access.log;
    error_log   /var/log/nginx/webserver_error.log;

    location / {
            proxy_pass http://172.30.0.3:80/;
    }
}

# The Registry
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name registry.mycompany.com;

    ssl_certificate         /etc/ssl/private/star_mycompany_com.chained.crt;
    ssl_certificate_key     /etc/ssl/private/star_mycompany_com.key;

    access_log  /var/log/nginx/registry_access.log;
    error_log   /var/log/nginx/registry_error.log;

    location / {
            proxy_pass http://172.30.0.2:80/;
    }
}

在注册表的docker-compose.yml中,将其放在IP 172.30.0.2中,

在webserver的docker-compose.yml中,将其放在IP 172.30.0.3上。

步骤3:在Docker容器中运行Nginx本身

docker-compose.yml

代码语言:javascript
复制
version: "3.9"

services:
  proxyserver:
    image: nginx:latest
    container_name: Proxyserver
    working_dir: /usr/share/nginx/html
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./etc/nginx/conf.d:/etc/nginx/conf.d:ro
      - ./etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./etc/ssl/private:/etc/ssl/private
      - ./var/log/nginx:/var/log/nginx
    networks:
      my-net:
        ipv4_address: 172.30.0.254

networks:
  my-net:
    external: true
    name: cops-net

第4步:创建外部码头网络

create_network.sh

代码语言:javascript
复制
docker network create \
    --driver=bridge \
    --subnet=172.30.0.0/16 \
    --attachable \
    --gateway=172.30.0.1 \
    my-net

第五步:启动一切

  • 使用webserver启动容器
  • 使用注册表启动容器
  • 启动proxyserver
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72373286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档