2014-07-08 5 views
0

다른 곳에서는 SQLite가 Dokku에서 지원되지 않는다고 읽었습니다. 왜 안돼? 나는 SQLAlchemy와 함께 Flask 응용 프로그램을 사용하고 있으며 모든 추상화가 일어나고있는 것처럼 보인다. 나는 sqlite 데이터베이스 파일을 디스크 (/ home/dokku/database/my_db, 아마도?)에 넣고 SQLAlchemy에 줄 수 없었을 까?Dokku with SQLite?

engine = create_engine('sqlite://///home/dokku/database/my_db') 

더 구체적으로 말하면, Dokku를 사용하여 문자열을 환경 변수로 저장하는 대신 직접 전달하는 것이 좋습니다.

왜 작동하지 않습니까?

답변

4

왜 것없는이 작업?

Dokku는 Docker를 통해 컨테이너를 만들고 응용 프로그램은이 컨테이너와 파일 시스템 내에서 실행됩니다. 게다가 플라스크 앱에는 /home/dokkuby design에 대한 액세스 권한이 없습니다.

  • (예를 들어 /app/db.sqlite) 컨테이너 내부의 경로를 사용

    사용자의 특정 요구에 따라하고 당신이 하나의 고정 표시기 용기를 가지고. 이것은 앱의 컨테이너가 존재하는 한 작동합니다. 그러나 모든 목적을 위해 Dokku 앱의 파일 시스템을 임시로 고려해야합니다.

  • dokku 호스트에있는 호스트 파일을 매핑합니다. dokku-persistent-storage 플러그인을 사용합니다.

  • docker data volumes을 사용하십시오. 이 글을 쓰는 시점에는 독크 플러그인이없는 것 같지만 비교적 간단합니다 (데이터 컨테이너를 만들려면 create 명령이 필요합니다. link 명령을 앱에 연결하려면 마지막으로 dokku-args에 연결해야합니다). docker run에 인수) 요즘

+0

을 생성 (dokku 당신이 사용하는 것이> 0.5) 내장 dokku 저장지도와 같은 폴더를 마운트 할 http://dokku.viewdocs.io/dokku/dokku-storage/ 플러그인 영구 저장 위치. – Felix

1

글쎄, 나는 조금 늦다. 그러나 이것은 Dokku가 호스트 OS에 접근 할 수없는 도커 이미지를 사용하기 때문이다. (의미는 /home/dokku/database/my_db.db은 응용 프로그램과 관련이있다).

또 다른 요인은 Dokku이 (https://devcenter.heroku.com/articles/sqlite3 참조) 또한이 방식으로 영구적 인 파일 저장을 지원하지 않습니다 Heroku가의 오픈 소스를 "복제"를 할 수 있도록 설계되어 있다는 점이다