Мне нужно получить доступ к папке на моем хост-компьютере, которая содержит файлы с возможностью шифрования let в
/ docker -объемах / etc / letsencrypt / live / mydomain.com
на моем одном из контейнеров. Я сопоставил том в файле compose.
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"]
На моем сервере есть три файла, к которым мне нужно получить доступ из / app / certs. js file.
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 -состав, это всегда дает мне
{"error": {"errno": - 2, "syscall": "open", "code": "ENOENT", "path": "/ app / certs / privkey.pem"} ENOENT: нет такого файла или каталога также два других.
Я застрял, может любой одна помощь Я новичок в docker.