Я пытаюсь создать базу данных sqlite на томе в контейнере докера.Когда выполнение достигает c = conn.cursor()
a, появляется следующая ошибка:
sqlite3.ProgrammingError: Cannot operate on a closed database.
Я хотел повторно использовать процесс подключения, поэтому построил следующие функции, которые, я думаю, могут быть там, где проблема:
def create_sqlite_conn(db):
try:
conn = sqlite3.connect(db, detect_types=sqlite3.PARSE_DECLTYPES | sqlite3.PARSE_COLNAMES)
return conn
except sqlite3.Error as e:
logging.warning("WARNING: Error accessing DB: {}".format(db), e)
finally:
conn.close()
def create_db(db):
conn = create_sqlite_conn(db)
c = conn.cursor()
c.execute('''CREATE TABLE table1(id INTEGER PRIMARY KEY AUTOINCREMENT, ip_ver TEXT, date_time DATETIME)''')
conn.commit()
Это вызывается с помощью:
create_db('/home/web/data/new_db.sql')
Этот код выполняется за пределами контейнера докера, поэтому мне интересно, связано ли это с альпийским или докерским интерфейсом.Мой файл Docker выглядит так:
FROM alpine:3.7
RUN apk --no-cache add python3 build-base linux-headers python3-dev \
&& pip3 install virtualenv \
&& addgroup -g 500 web \
&& adduser -D -u 1000 -G web web
WORKDIR /home/web
ENV PYTHONPATH /home/web/myapp
USER web
RUN mkdir -p /home/web/env /home/web/myapp /home/web/data/
COPY myapp/__init__.py /home/web/myapp/
COPY myapp/myapp.py /home/web/myapp/
COPY setup.py /home/web/myapp/
COPY requirements.txt /home/web/myapp/
COPY README.txt /home/web/myapp/
RUN /usr/bin/virtualenv -p python3 /home/web/env \
&& source /home/web/env/bin/activate \
&& python -m pip install ./myapp/ \
&& python -m pip install -r ./myapp/requirements.txt
VOLUME ["./data"]
CMD ["/home/web/env/bin/myapp"]
Запуск контейнера Docker, который я пробовал, с флагом «--privileged» и без него, и все равно выдает ту же ошибку.
Спасибо,