Как получить доступ к базе данных sqlite3, используя NodeJS из другого контейнера Docker? - PullRequest
0 голосов
/ 06 августа 2020

Это мой файл docker -compose.yml:

version: '3.2'
services:
  pa-portal:
    image: web_app_image
    container_name: pa-portal
    volumes:
      - productDB:/web_app/db
    ports:
      - "8080:8080"
  cypress:
    image: "cypress/included:4.4.0"
    depends_on:
      - pa-portal
    environment:
      - CYPRESS_baseUrl=http://pa-portal:8080
    working_dir: /cypress-testing

    volumes:
      - ./:/cypress-testing

volumes:
  productDB:

В одной из моих задач Cypress у меня есть следующий фрагмент кода:

  let db = new sqlite3.Database('pa-portal:8080/web_app/db/db.sqlite3', sqlite3.OPEN_READWRITE, (err) => {
    if (err) {
      console.error(err.message);
    }
    console.log('Connected to the database.');
  });


  db.run(`DELETE FROM table_name`, function (err) {
    if (err) {
      return console.error(err.message);
    }
    console.log(`Row(s) deleted ${this.changes}`);});

но я получение сообщения, что

 Connected to the database.
cypress_1    | SQLITE_CANTOPEN: unable to open database file

Я предполагаю, что обращаюсь к базе данных неправильным способом, и мне нужен способ Docker specifici c для этого ...

1 Ответ

1 голос
/ 06 августа 2020

Этот файл db.sqlite3 является частью чужого Django веб-приложения

Тогда это приложение Django должно предоставлять API для предотвращения несанкционированного доступа к этой базе данных.

Как уже упоминалось, файловые системы контейнеров изолированы друг от друга

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...