質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

1回答

2234閲覧

1つのコンテナでsqlite3とFlaskアプリケーションを起動させることは可能でしょうか?

sequelanonymous

総合スコア123

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/08/23 18:51

編集2020/08/23 18:52

タイトル通りの質問になります。個人的にはできると思っています。

しかし、なぜか、コンテナ内から起動ができず、「このサイトにアクセスできません」というページにあたります。
(コンテナなしで普通にローカル実行では、何も問題なくサイトにアクセスできます)
この原因が、DB用にコンテナをわけていない、もしくは、sqlite3周りで何か問題がおきてる、と言う仮説がおもいつき、ご質問させていただきました。

何か、見落としている可能性がある気がしています。お気づきな点ありましたらご教示頂けませんでしょうか?

下記のdockerfileで動くと思っていますが、うごきません。

Dockerfile

1FROM python:3.8 2 3WORKDIR /usr/src/ 4 5COPY ./apps /usr/src/apps 6COPY ./local.sqlite /usr/src/local.sqlite 7COPY ./requirements.txt /usr/src/requirements.txt 8 9RUN pip install -r requirements.txt 10ENV FLASK_APP "application.app:create_app('local')" 11 12EXPOSE 5000 13 14CMD flask run

コンテナを起動した状態で、curlを叩いても、下記のエラーがでます。

curl: (7) Failed to connect to 127.0.0.1 port 5000: Connection refused

下記を追加していても、全く同じerrorでした。

Dockerfile

1RUN sudo apt-get -y update 2RUN sudo apt-get -y upgrade 3RUN sudo apt-get install -y sqlite3 libsqlite3-dev 4

参照URL:
https://www.it-swarm.dev/ja/docker/sqlite%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%82%92docker%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E3%83%BC%E3%81%AB%E5%9F%8B%E3%82%81%E8%BE%BC%E3%81%BF%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F/1056383970/

https://peei.hatenablog.com/entry/2019/04/26/233822

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dameo

2020/08/25 07:29 編集

結論だけ言えば可能です。 一切の省略なく具体的に何をしてどう駄目だったのかを書かないと原因に辿り着かないと思いますよ。
dameo

2020/08/25 08:15

# 一応単体デバッグモードで動くだけのコード。docker-compose未使用。空ディレクトリで。 sed 's/^\xc2\xa0/ /;s/$/$/g;s/`/`/g;s/ /\x20\x20/g' <<__END_OF_TERMINAL_CODE__ >Dockerfile FROM python:3.8 WORKDIR /usr/src COPY ./app /usr/src/app RUN pip install flask CMD cd /usr/src/app;python app.py __END_OF_TERMINAL_CODE__ sed 's/^\xc2\xa0/ /;s/$/$/g;s/`/`/g;s/ /\x20\x20/g' <<__END_OF_TERMINAL_CODE__ >create_data.sql create table hoge(id string primary key, value string); insert into hoge values('id1', 'value1'); insert into hoge values('id2', 'value2'); __END_OF_TERMINAL_CODE__ sed 's/^\xc2\xa0/ /;s/$/$/g;s/`/`/g;s/ /\x20\x20/g' <<__END_OF_TERMINAL_CODE__ >create_env.sh sqlite3 app/local.sqlite <create_data.sql docker build -t flask_sqlite . docker run -it --rm -p 5000:5000 flask_sqlite __END_OF_TERMINAL_CODE__ mkdir app sed 's/^\xc2\xa0/ /;s/$/$/g;s/`/`/g;s/ /\x20\x20/g' <<__END_OF_TERMINAL_CODE__ >app/app.py import sqlite3 from flask import Flask app = Flask(__name__) @app.route('/') def index():   con = sqlite3.connect('local.sqlite')   rows = con.execute('select * from hoge')   trs = ['<tr><td>'+row[0]+'</td><td>'+row[1] +'</td></tr>' for row in rows]   con.close()   return '<table>'+''.join(trs)+'</table>' if __name__ == "__main__":   app.run(debug=True, host='0.0.0.0') __END_OF_TERMINAL_CODE__
guest

回答1

0

1つのコンテナで複数のアプリケーションを動かせます。

curl: (7) Failed to connect to 127.0.0.1 port 5000: Connection refused

このエラーが出ているのは、ホスト側にポートが公開されているか確認する必要があります。

docker run -d -p 5000:5000 イメージ名

このように -p オプションを付けて、ホスト側にポートをマッピング(割り当て)する設定は正常に有効になっていますでしょうか。もしなければ、docker コンテナ作成・実行時にこのオプションを付ける必要があります(起動後には変更できません)。

Docker でコンテナが正常に起動し(docker ps コマンドで、コンテナが時tk光柱)、かつ、起動時に正しくポートのマッピングされていれば、問題は Docker 側ではなくアプリケーション側の設定によると考えられます。

投稿2021/04/10 09:09

zembutsu

総合スコア1584

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問