【问题标题】:build with volumes in the docker-compose.yml使用 docker-compose.yml 中的卷构建
【发布时间】:2019-01-31 14:02:56
【问题描述】:

我想用 NGINX 运行多个 Web 应用程序映像。

所以我写了docker-compose.yml 来构建 nginx 镜像并运行 nodejs 容器。

我有 Letsencrypt 颁发的 SSL 证书。

证书文件位于/etc/letsencrypt/live/mydomain.com/

我希望 NGINX 容器读取文件。

所以,我将volumes: - /etc/letsencrypt/live/mydomain.com/:/etc/cert:ro 附加到docker-compose.yml

但是 nginx.conf 无法读取文件。

发现/etc/cert目录不存在,挂载为绑定类型。

我想知道如何在 docker-compose.yml 文件中设置卷以读取容器内部。

docker-compose.yml

version: '2.0'

services:  
  nginx:
    container_name: manager
    build: ./nginx
    links:
      - app-1:app-1
      ...
    ports:
      - 80:80
      - 443:443
    volumes:
      - /etc/letsencrypt/live/mydomain.com/:/etc/cert:ro
    depends_on:
      - app-1
      ...

  app-1:
    container_name: audio-1
    image: audio:test
    ports:
      - 80

  ...

nginx.conf

worker_processes 4;

events { worker_connections 1024; }

http {  
  upstream node-app {
    least_conn;
    server app-1:80 weight=10 max_fails=3 fail_timeout=60s;
    ...
  }

  server {
    listen 80;
    return 301 https://$host$request_uri;
  }

  server {
    listen 443 ssl;
    ssl_certificate /etc/cert/fullchain.pem;
    ssl_certificate_key /etc/cert/privkey.pem;
    location / {
      proxy_pass http://node-app;
      ...
    }
  }
}

错误

nginx: [emerg] BIO_new_file("/etc/cert/fullchain.pem") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/cert/fullchain.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)

$docker 检查经理

...
"Mounts": [
  {
    "Type": "bind",
    "Source": "/etc/letsencrypt/live/luvber.kr",
    "Destination": "/etc/cert",
    "Mode": "ro",
    "RW": false,
    "Propagation": "rprivate"
   }
 ],
...

谢谢

【问题讨论】:

    标签: docker nginx docker-compose docker-volume


    【解决方案1】:

    问题是在构建操作完成后会挂载该卷。这就是为什么这种方法不适合你的原因。

    您需要做的是将这些资源复制到dockerfile 中的容器内。

    假设您没有定义 dockerfile。您可以创建自己的 on 使 nginx 成为您的基本图像。

    看起来有点像....

    From nginx:latest
    
    COPY from/host/dir to/container/container/dir
    

    类似但在不同的上下文中他们正在解释here

    干杯!

    【讨论】:

      猜你喜欢
      • 2018-10-23
      • 2019-03-19
      • 1970-01-01
      • 1970-01-01
      • 2020-06-02
      • 2022-11-11
      • 2019-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多