Доступ к ssl .pem файлам внутри контейнера docker - PullRequest
0 голосов
/ 06 марта 2020

Мне нужно получить доступ к папке на моем хост-компьютере, которая содержит файлы с возможностью шифрования 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.

...