如何使用NodeJS从另一个Docker容器访问sqlite3数据库?

时间:2020-08-06 16:56:24

标签: node.js docker

这是我的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的方式...

1 个答案:

答案 0 :(得分:1)

该db.sqlite3文件是其他人的Django Web应用程序的一部分

然后Django应用应公开一个API,以防止未经授权访问该数据库。

如前所述,容器文件系统是相互隔离的