[英]build with volumes in the docker-compose.yml
我想使用NGINX運行多個Web應用程序映像。
所以我寫了docker-compose.yml
來構建nginx圖像並運行nodejs容器。
我有letencrypt頒發的SSL證書。
證書文件位於/etc/letsencrypt/live/mydomain.com/
我希望NGINX容器讀取文件。
因此,我將volumes: - /etc/letsencrypt/live/mydomain.com/:/etc/cert:ro
附加volumes: - /etc/letsencrypt/live/mydomain.com/:/etc/cert:ro
docker-compose.yml
volumes: - /etc/letsencrypt/live/mydomain.com/:/etc/cert:ro
docker-compose.yml
volumes: - /etc/letsencrypt/live/mydomain.com/:/etc/cert:ro
docker-compose.yml
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"
}
],
...
謝謝
問題是在構建操作完成后將裝入該卷。 這就是為什么這種方法對您不起作用的原因。
您需要做的是將這些資源復制到dockerfile
容器內。
假設您沒有定義dockerfile。 您可以創建使nginx
成為基本圖像的對象。
看起來有點像...
From nginx:latest
COPY from/host/dir to/container/container/dir
相似但在不同上下文中的他們在這里解釋
干杯!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.