【问题标题】:File exists in docker run volume but not docker-compose volume文件存在于 docker run 卷中,但不存在于 docker-compose 卷中
【发布时间】:2021-12-09 18:28:33
【问题描述】:

我试图弄清楚为什么我可以使用以下方法在卷中找到证书文件:

docker run -v ~/.aspnet/https:/https:ro -p 80:80 -p 443:433 -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx -e ASPNETCORE_Kestrel__Certificates__Default__Password=<MY PASSWORD HERE> housesearchwebsite

但不使用:

docker-compose -f docker-compose.custom.yml up

使用如下所示的 docker-compose.custom.yml:(已删除敏感信息)

version: '3.4'

services:   
  housesearchwebsite:
    image: housesearchwebsite
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=https://+:443;http://+:80
      - ConnectionString=host=db;port=5432;database=<DATABASENAME>;username=<DBUSERNAME>password=<MY DB PASSWORD>
      - ASPNETCORE_Kestrel__Certificates__Default__Password=<MY PASSWORD HERE>
      - ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
    ports:
      - "80"
      - "443"
    volumes:
      - ${HOME}/.aspnet/https:/https:ro
      - images_volume:/var/lib/housesearch/images
    networks:
      - dev-net

volumes:
  images_volume:

networks:
  dev-net:
    name: dev-net

我有一些 C# 代码首先检查ASPNETCORE_Kestrel__Certificates__Default__Path 路径中是否有 aspnetapp.pfx 文件,但只有在我运行 docker run 命令时才能找到它,如果我使用docker-compose 命令。

【问题讨论】:

  • 由于某种原因它刚刚开始工作。也许是因为我将 linux 用户添加到了 docker 组?

标签: docker docker-compose certificate docker-volume


【解决方案1】:

不知道为什么它开始随机工作,但我可以清楚地指出一个问题,这可能是您的错误的原因是您没有在docker-compose.yml 中正确映射端口。

端口应定义为:

ports:
 - "80:80"
 - "443:443"

映射将采用HOST:CONTAINER 格式。

文档here

【讨论】:

  • 但是从您发布的链接中:[...]共有三个选项:[...]“指定两个端口(HOST:CONTAINER)”[...或...]“仅指定容器端口(为主机端口选择一个临时主机端口)。” [...] 这是否意味着只为每个数字输入一个数字就可以了?不过,我意识到这可能是个好习惯。
  • 这是正确的,但您不能假设使用该语法时主机端口将与自动分配的主机端口相同;这可能会导致问题,例如在您的情况下,您使用静态端口 (ASPNETCORE_URLS=https://+:443;http://+:80) 设置环境
  • 有道理,谢谢你的解释!
猜你喜欢
  • 2020-07-15
  • 1970-01-01
  • 2022-01-06
  • 2020-04-06
  • 1970-01-01
  • 2015-07-14
  • 2021-08-25
  • 2020-09-12
相关资源
最近更新 更多