【发布时间】:2021-11-04 18:02:28
【问题描述】:
我需要访问我的主机上的一个文件夹,该文件夹包含位于
的 let-encrypt 文件/docker-volumes/etc/letsencrypt/live/mydomain.com
在我的一个容器上。 我已经在撰写文件中映射了卷。
compose.yml
version: "3"
services:
mongo:
container_name: mongo
image: mongo
ports:
- "27017:27017"
volumes:
- "./data:/data/db"
api:
container_name: my-api
restart: always
build:
context: ./my_backend
dockerfile: dockerfile
ports:
- "4002:443"
volumes:
- /docker-volumes/etc/letsencrypt/live/mydomain.com:/app/certs
links:
- mongo
dockerfile 在 my_backend
FROM node:10.16.3
WORKDIR /app
RUN mkdir certs
RUN mkdir public
RUN mkdir public/uploads
RUN mkdir public/videos
RUN mkdir public/reports
COPY ./package*.json ./
RUN npm install
COPY . .
CMD ["npm", "start"]
我需要从我的 server.js 文件中的 /app/certs 访问三个文件。
server.js
const fs = require("fs");
const https = require("https");
const credentials = {};
const path = require("path");
if (process.env.NODE_ENV === "production") {
const privateKey = fs.readFileSync(
path.join(__dirname, "certs/privkey.pem"),
"utf8"
);
const certificate = fs.readFileSync(
path.join(__dirname, "certs/cert.pem"),
"utf8"
);
const ca = fs.readFileSync(path.join(__dirname, "certs/fullchain.pem"), "utf8");
credentials["key"] = privateKey;
credentials["cert"] = certificate;
credentials["ca"] = ca;
}
...other logic and server.listen on port 443
当我启动 docker-compose up 时,它总是给我这个
{"error":{"errno":-2,"syscall":"open","code":"ENOENT","path":"/app/certs/privkey.pem"} ENOENT:没有这样的文件或目录 其他两个也是。
我被卡住了,谁能帮忙。我是 docker 新手。
【问题讨论】:
-
如果你
docker-compose run api ls /app/certs,在吗? -
它返回 README cert.pem chain.pem fullchain.pem privkey.pem
标签: node.js docker docker-compose dockerfile fs