当前位置: 首页 > 知识库问答 >
问题:

linux - dokcer容器中配置ssl 证书?

方鸿振
2023-07-15

我在服务器上运行了一个 whisper 语音转文字的镜像,https://hub.docker.com/r/onerahmet/openai-whisper-asr-webservice
docker-compose file 如下:

version: "3.7"services:  whisper-gpu:    container_name:whisper-gpu    build:      context: ./      dockerfile: Dockerfile.gpu    image: whisper-service-gpu    volumes:      - ./:/home/app    ports:      - "9001:9000"    environment:      ASR_MODEL: "small"      API_KEYS: "..."    deploy:      resources:        reservations:          devices:            - driver: nvidia              count: 1              capabilities: [gpu]volumes:  myapp:

dockerfile

FROM python:3.9.9-slimENV POETRY_VERSION=1.2.0ENV POETRY_VENV=/opt/poetry-venvRUN export DEBIAN_FRONTEND=noninteractive \    && apt-get -qq update \    && apt-get -qq install --no-install-recommends \    ffmpeg \    && rm -rf /var/lib/apt/lists/*RUN python3 -m venv $POETRY_VENV \    && $POETRY_VENV/bin/pip install -U pip setuptools \    && $POETRY_VENV/bin/pip install poetry==${POETRY_VERSION}ENV PATH="${PATH}:${POETRY_VENV}/bin"WORKDIR /appCOPY . /appRUN poetry installCMD [ "poetry", "run", "whisper_asr"]

目前服务运行正常,但是web访问的时候需要https, 我这个服务区是一个实体的服务器,所以需要手动配置证书, 目前我的域名已经使用了阿里云的免费单域名证书,请问下一步我该如何配置该证书? 是把证书配置到宿主机上面还是配置在容器内? 该如何去做?

共有2个答案

姬慎之
2023-07-15
server {    listen 443 ssl;    server_name your-domain.com;    ssl_certificate /etc/nginx/ssl/your-domain.com.crt;    ssl_certificate_key /etc/nginx/ssl/your-domain.com.key;    location / {        proxy_pass http://localhost:9001;        proxy_set_header Host $host;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    }}
国仰岳
2023-07-15

可以通过nginx来配置https访问,有两种实现方式:

第一种:在本机上安装nginx服务,配置相应ssl证书,然后转发到本地9001端口。

第二种:在docker-compose文件中,新加一段nginx的service,具体的nginx.conf内容和第一种基本相同,只是转发地址和端口就变成了 whisper-gpu:9000

以下nginx.conf 的参考配置:

server {  listen 443;  ssl on;  ssl_certificate /etc/nginx/conf.d/cert.pem;  ssl_certificate_key /etc/nginx/conf.d/key.pem;  location / {  proxy_pass http://whisper-gpu:9000;  proxy_set_header Host $host;  proxy_set_header X-Forwarded-For $remote_addr; }}

具体docker-compose的文件配置,就不写了,建议实现方式选择第二种,毕竟容器组中内部转发效率肯定更高,而且既然用容器了,那干脆都用容器来实现。

 类似资料:
  • 问题内容: 是否有任何优雅的方法可以将ssl证书添加到来自docker pull的映像中? 我正在寻找一种将文件添加到/ etc / ssl / certs并运行update-ca- certificates的简单且可复制的方法。(这应该涵盖ubuntu和debian映像)。 我在CoreOS上使用docker,而coreos机器信任所需的ssl证书,但docker容器显然仅具有默认值。 我尝试过

  • 主要内容:1 Tomcat生成SSL证书,2 使用SSL证书1 Tomcat生成SSL证书 运行以下命令以生成证书: 在Windows上: 在Linux上: 该工具将询问一些问题以提供证书。证书将位于文件夹中,证书名称为"tomcat"。您可以使用以下方法检查证书: 在Windows上: 在Linux上: 2 使用SSL证书 编辑文件: 在Windows上: 在Linux上: 并添加一个SSL连接器。 重新启动Tomcat,您就完成了。现在,您可以在Tom

  • 问题内容: 我正在创建一个Go TCP服务器(不是http / s),并且试图将其配置为使用SSL。我有一个StartCom免费SSL证书,正试图用来完成此任务。我的服务器代码如下: 我尝试切换证书的顺序,但不包括某些证书等,但是的输出基本上保持不变。有关完整输出,请参见此处。我对中间证书似乎做错了,但是我不知道该怎么办。我已经为此工作了几天,进行了大量的谷歌搜索和搜索,但似乎没有什么适合我的情况

  • 谈到SSL,我是个新手。所以我可以在这里使用一些关于我的情况的专业知识。 我有一个基于Java的web应用程序,可以进行SSL API调用。API和web应用程序都托管在同一台服务器上(

  • EMM一共需要4个证书,分别是IOS企业证书、Android keystore证书、MDM证书和受信SSL证书,用途如下: IOS企业证书:应用封装模块,用于重新签名已封装好的IOS应用程序。 Android keystore证书:应用封装模块,用于重新签名已封装好的Android应用程序。 MDM证书:移动设备管理模块,用于IOS移动设备管理,推送管理命令。 受信SSL证书:应用商店模块,用于I

  • 配置文件中指令的作用范围可能是整个服务器,也可能是特定的目录、文件、主机、URL。本文阐述如何使用配置段(容器)以及.htaccess文件来改变配置指令的作用范围。 配置段(容器)的类型 相关模块 相关指令 core mod_version mod_proxy <Directory> <DirectoryMatch> <Files> <FilesMatch> <IfDefine> <IfModul