Мы используем два контейнера, один из которых Python flask, а другой - ExpressJS, мы создали docker том вручную docker volume create --name localdb
, этот том работает нормально с python приложение, в котором я создал docker -компонент и определил том как внешний true.
Мы вставили некоторые данные из Python, и записи завершены, поэтому мы пытаемся прочитать существующие данные из lacaldb/reviews.db
Но он не работает для прямого доступа через Docker, работает для ExpressJs Приложение
Docker, команда:
docker container run -v localdb:/database --name dcserver --rm localserver:v1
Использование nodeJs v12
и ExpressJs
с SQlite3
для хранения данных, создайте том Docker для базы данных Sqlite. Мы создали том вручную с помощью команды docker и пытались получить к нему доступ с помощью команды docker run
, но получили ошибку.
Ошибка:
[Error: SQLITE_CANTOPEN: unable to open database file
Emitted 'error' event on Database instance at:
] {
errno: 14,
code: 'SQLITE_CANTOPEN'
}
Пример NodeJs Сценарий:
var sqlite3 = require('sqlite3').verbose()
var db = new sqlite3.Database(process.env.LOCAL_DB_PATH)
console.log(process.env.LOCAL_DB_PATH) // Prints "/localdb/reviews.db"
async function getReviews(){
db.all(`SELECT * from REVIEWS`, [], function(err, res) {
if (err) {
console.log(err.message)
}
console.log(res)
})
}
export default getReviews
Проверенный том localdb:
$ docker volume inspect localdb
[
{
"CreatedAt": "2020-04-03T17:01:29Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/localdb/_data",
"Name": "localdb",
"Options": {},
"Scope": "local"
}
]
docker -составить .yml // здесь работает нормально
version: "3.7"
services:
flask:
build: ./flask
container_name: flask
restart: always
environment:
- APP_NAME=myFlaskApp
expose:
- 8080
volumes:
- localdb:/database
nginx:
build: ./nginx
container_name: nginx
restart: always
ports:
- "80:80"
volumes:
localdb:
external: true