在dockerfile中复制的文件:如果在特定位置,则找不到

Audiopolis

我有这个dockerfile:

FROM nginx

COPY .docker/certificates/fullchain.pem /etc/letsencrypt/live/mydomain.com/fullchain.pem
COPY .docker/certificates/privkey.pem /etc/letsencrypt/live/mydomain.com/privkey.pem
COPY .docker/config/options-ssl-nginx.conf /etc/nginx/options-ssl-nginx.conf
COPY .docker/config/ssl-dhparams.pem /etc/nginx/ssl-dhparams.pem
COPY .docker/config/nginx.conf /etc/nginx/conf.d/default.conf

RUN chmod +r /etc/letsencrypt/live/mydomain.com/fullchain.pem

我的nginx配置中有这个:

server {
    listen 443 ssl default_server;
    server_name _;

    # Why can't this file be found?
    ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
    # ssl_certificate /etc/nginx/fullchain.pem;
    # ssl_certificate_key /etc/nginx/privkey.pem;
    include /etc/nginx/options-ssl-nginx.conf;
    ssl_dhparam /etc/nginx/ssl-dhparams.pem;

    ...
}

Nginx崩溃与:

[emerg] 7#7: cannot load certificate "/etc/letsencrypt/live/mydomain.com/fullchain.pem": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/letsencrypt/live/mydomain.com/fullchain.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)

但是,如果我改变的位置fullchain.pemprivkey.pem,例如,/etc/nginx/fullchaim.pem/etc/nginx/privkey.pem和更新nginx的配置,它确实找到文件,按预期工作。

这是中的服务定义docker-compose.yml

  nginx-server:
    container_name: "nginx-server"
    build:
      context: ../../
      dockerfile: .docker/dockerfiles/NginxDockerfile
    restart: on-failure
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - static-content:/home/docker/code/static
      - letsencrypt-data:/etc/letsencrypt
      - certbot-data:/var/www/certbot
    depends_on:
      - api
    command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
    networks:
      - api-network
      - main

# Commented out to verify that the files aren't being deleted by certbot
#  certbot:
#    image: certbot/certbot
#    container_name: "certbot"
#    depends_on:
#      - nginx-server
#    restart: unless-stopped
#    volumes:
#      - letsencrypt-data:/etc/letsencrypt
#      - certbot-data:/var/www/certbot
#    entrypoint: "/bin/sh -c 'sleep 30s && trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"

目的是fullchain.pem用作初始证书,直到可以让我们加密为止。请注意,目前没有任何certbot服务,并且/etc/letsencrypt/live/mydomain.com根本没有在其他任何地方引用目录(仅在NginxDockerfile和中nginx.conf),因此其他服务删除文件应该成为问题。重建--no-cache无济于事。

为什么nginx不能在此特定位置找到文件,但是如果将它们复制到其他位置也可以找到它们?

编辑:按照建议,我最终改为使用主机卷。当主机卷位于存储库中root_of_context/path/to/gitignored/directory/letsencrypt:/etc/letsencrypt/etc/letsencrypt:/etc/letsencrypt,此方法不起作用,但是与一起使用时,我个人觉得很丑,但是很好。

罗布·布兰查德

卷是在运行时挂载的,因此在构建容器之后。
自从您安装letsencrypt-data之后/etc/letsencrypt,Nginx就会在其中查找文件letsencrypt-data
我不知道目的的这个安装,但我想如果你删除你的容器会在运行成功- letsencrypt-data:/etc/letsencryptvolumes

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在dockerfile中复制的文件:如果在特定位置,则找不到

来自分类Dev

在dockerfile中复制的文件:如果在特定位置,则找不到

来自分类Dev

如果在一个主机中找不到文件,则从另一台主机复制SCP

来自分类Dev

如果在file2中找不到文件1中的grep行

来自分类Dev

如果在file2中找不到文件1中的grep行

来自分类Dev

如果在react中找不到localstorage值,则重定向到特定页面

来自分类Dev

Tornado:如果在 StaticFileHandler 中找不到,如何发送默认文件

来自分类Dev

如果在 python 中找不到文件,有没有办法抛出异常?

来自分类Dev

如果在MYSQL中找不到匹配项,则die()

来自分类Dev

CMD批处理文件,如果在文本txt文件的列表中找不到文件,则删除文件

来自分类Dev

如果在另一张纸上找不到,请复制单元格

来自分类Dev

如果在列B中找不到A列中的值,请删除R中的行

来自分类Dev

如果在列B中找不到A列中的值,请删除R中的行

来自分类Dev

如果在数组中找不到值,则从字典中删除对象

来自分类Dev

如果在MYSQL中的COUNT(*)查询中找不到记录,则返回0

来自分类Dev

如果在JAVA中的二进制搜索中找不到数字,我该如何返回数字应去的位置的索引

来自分类Dev

如果在列表中找不到数字,如何返回false

来自分类Dev

如果在“ bash” shell中找不到命令(“您的意思是……”功能),如何启用建议?

来自分类Dev

如果在转换表中找不到记录,则选择列

来自分类Dev

如果在Android中找不到Dynamodb,如何获取getitem

来自分类Dev

如果在v-for中找不到数据,则隐藏文本

来自分类Dev

如果在搜索栏中找不到结果,则显示错误消息

来自分类Dev

Node.Js-如果在MongoDB中找不到匹配的文档,则返回1

来自分类Dev

Python-如果在JSON中找不到元素,则将值更新为0

来自分类Dev

Terraform:如果在AZ中找不到EC2实例类型产品,则处理错误

来自分类Dev

如果在列表中找不到数字,如何返回false

来自分类Dev

如果在“ bash” shell中找不到命令(“您的意思是……”功能),如何启用建议?

来自分类Dev

如果在圆圈中找不到单击的点,则打印适合信息

来自分类Dev

SQL查询,如果在链接表中找不到,则将值设置为null

Related 相关文章

  1. 1

    在dockerfile中复制的文件:如果在特定位置,则找不到

  2. 2

    在dockerfile中复制的文件:如果在特定位置,则找不到

  3. 3

    如果在一个主机中找不到文件,则从另一台主机复制SCP

  4. 4

    如果在file2中找不到文件1中的grep行

  5. 5

    如果在file2中找不到文件1中的grep行

  6. 6

    如果在react中找不到localstorage值,则重定向到特定页面

  7. 7

    Tornado:如果在 StaticFileHandler 中找不到,如何发送默认文件

  8. 8

    如果在 python 中找不到文件,有没有办法抛出异常?

  9. 9

    如果在MYSQL中找不到匹配项,则die()

  10. 10

    CMD批处理文件,如果在文本txt文件的列表中找不到文件,则删除文件

  11. 11

    如果在另一张纸上找不到,请复制单元格

  12. 12

    如果在列B中找不到A列中的值,请删除R中的行

  13. 13

    如果在列B中找不到A列中的值,请删除R中的行

  14. 14

    如果在数组中找不到值,则从字典中删除对象

  15. 15

    如果在MYSQL中的COUNT(*)查询中找不到记录,则返回0

  16. 16

    如果在JAVA中的二进制搜索中找不到数字,我该如何返回数字应去的位置的索引

  17. 17

    如果在列表中找不到数字,如何返回false

  18. 18

    如果在“ bash” shell中找不到命令(“您的意思是……”功能),如何启用建议?

  19. 19

    如果在转换表中找不到记录,则选择列

  20. 20

    如果在Android中找不到Dynamodb,如何获取getitem

  21. 21

    如果在v-for中找不到数据,则隐藏文本

  22. 22

    如果在搜索栏中找不到结果,则显示错误消息

  23. 23

    Node.Js-如果在MongoDB中找不到匹配的文档,则返回1

  24. 24

    Python-如果在JSON中找不到元素,则将值更新为0

  25. 25

    Terraform:如果在AZ中找不到EC2实例类型产品,则处理错误

  26. 26

    如果在列表中找不到数字,如何返回false

  27. 27

    如果在“ bash” shell中找不到命令(“您的意思是……”功能),如何启用建议?

  28. 28

    如果在圆圈中找不到单击的点,则打印适合信息

  29. 29

    SQL查询,如果在链接表中找不到,则将值设置为null

热门标签

归档