Docker 上的 InfluxDB - Compose 无法读取 SSL 证书文件
InfluxDB on Docker-Compose can't read SSL cert file
我在尝试使用 InfluxDB v1.8 运行ning 在 Docker Compose 上配置 SSL 时遇到了一些麻烦。
我按照 official documentation 使用自签名证书启用 HTTPS,但容器崩溃并出现以下错误:
run: open server: open service: open "/etc/ssl/influxdb-selfsigned.crt": no such file or directory
如果我 运行 使用 docker run
命令进行此配置,它会起作用:
docker run -p 8086:8086 -v $PWD/ssl:/etc/ssl \
-e INFLUXDB_DB=db0 \
-e INFLUXDB_ADMIN_USER=admin \
-e INFLUXDB_ADMIN_PASSWORD=supersecretpassword \
-e INFLUXDB_HTTP_HTTPS_ENABLED=true \
-e INFLUXDB_HTTP_HTTPS_CERTIFICATE="/etc/ssl/influxdb-selfsigned.crt" \
-e INFLUXDB_HTTP_HTTPS_PRIVATE_KEY="/etc/ssl/influxdb-selfsigned.key" \
-d influxdb
我的docker-compose.yml如下:
version: "3"
services:
influxdb:
image: influxdb
ports:
- "8086:8086"
volumes:
- influxdb:/var/lib/influxdb
- ./ssl:/etc/ssl/
environment:
- INFLUXDB_DB=db0
- INFLUXDB_ADMIN_USER=admin
- INFLUXDB_ADMIN_PASSWORD=supersecretpassword
- INFLUXDB_HTTP_HTTPS_ENABLED=true
- INFLUXDB_HTTP_HTTPS_CERTIFICATE="/etc/ssl/influxdb-selfsigned.crt"
- INFLUXDB_HTTP_HTTPS_PRIVATE_KEY="/etc/ssl/influxdb-selfsigned.key"
- INFLUXDB_HTTP_AUTH_ENABLED=true
volumes:
influxdb:
如果我将 INFLUXDB_HTTP_HTTPS_ENABLED
设置为 false,我可以看到证书和密钥文件已按照应有的方式安装在容器 ( docker exec -it airq_influxdb_1 ls -la /etc/ssl
)
中的 /etc/ssl
中
您知道为什么会发生这种情况以及如何解决吗?
docker-compose.yml
传入的环境变量是字符串。您不需要传递引号。
Influx DB 正在 "/etc/ssl/influxdb-selfsigned.crt"
...literally
下查找证书
只需删除引号,数据库就会启动:
...
- INFLUXDB_HTTP_HTTPS_ENABLED=true
- INFLUXDB_HTTP_HTTPS_CERTIFICATE=/etc/ssl/influxdb-selfsigned.crt
- INFLUXDB_HTTP_HTTPS_PRIVATE_KEY=/etc/ssl/influxdb-selfsigned.key
...
我在尝试使用 InfluxDB v1.8 运行ning 在 Docker Compose 上配置 SSL 时遇到了一些麻烦。
我按照 official documentation 使用自签名证书启用 HTTPS,但容器崩溃并出现以下错误:
run: open server: open service: open "/etc/ssl/influxdb-selfsigned.crt": no such file or directory
如果我 运行 使用 docker run
命令进行此配置,它会起作用:
docker run -p 8086:8086 -v $PWD/ssl:/etc/ssl \
-e INFLUXDB_DB=db0 \
-e INFLUXDB_ADMIN_USER=admin \
-e INFLUXDB_ADMIN_PASSWORD=supersecretpassword \
-e INFLUXDB_HTTP_HTTPS_ENABLED=true \
-e INFLUXDB_HTTP_HTTPS_CERTIFICATE="/etc/ssl/influxdb-selfsigned.crt" \
-e INFLUXDB_HTTP_HTTPS_PRIVATE_KEY="/etc/ssl/influxdb-selfsigned.key" \
-d influxdb
我的docker-compose.yml如下:
version: "3"
services:
influxdb:
image: influxdb
ports:
- "8086:8086"
volumes:
- influxdb:/var/lib/influxdb
- ./ssl:/etc/ssl/
environment:
- INFLUXDB_DB=db0
- INFLUXDB_ADMIN_USER=admin
- INFLUXDB_ADMIN_PASSWORD=supersecretpassword
- INFLUXDB_HTTP_HTTPS_ENABLED=true
- INFLUXDB_HTTP_HTTPS_CERTIFICATE="/etc/ssl/influxdb-selfsigned.crt"
- INFLUXDB_HTTP_HTTPS_PRIVATE_KEY="/etc/ssl/influxdb-selfsigned.key"
- INFLUXDB_HTTP_AUTH_ENABLED=true
volumes:
influxdb:
如果我将 INFLUXDB_HTTP_HTTPS_ENABLED
设置为 false,我可以看到证书和密钥文件已按照应有的方式安装在容器 ( docker exec -it airq_influxdb_1 ls -la /etc/ssl
)
/etc/ssl
中
您知道为什么会发生这种情况以及如何解决吗?
docker-compose.yml
传入的环境变量是字符串。您不需要传递引号。
Influx DB 正在 "/etc/ssl/influxdb-selfsigned.crt"
...literally
只需删除引号,数据库就会启动:
...
- INFLUXDB_HTTP_HTTPS_ENABLED=true
- INFLUXDB_HTTP_HTTPS_CERTIFICATE=/etc/ssl/influxdb-selfsigned.crt
- INFLUXDB_HTTP_HTTPS_PRIVATE_KEY=/etc/ssl/influxdb-selfsigned.key
...