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

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

新規登録して質問してみよう
ただいま回答率
85.47%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Flask

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1322閲覧

dockerで立ち上げたflaskアプリで画像が表示されない

Fukada

総合スコア13

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Flask

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/11/08 04:38

編集2020/11/08 04:38

dockerで立ち上げたflaskアプリで画像が表示されない

dockerを使ってflaskアプリを立ち上げたのですが、画像が表示されません。
dockerを使わなかった場合はしっかり表示されるのですが原因がわかりません。
以下、docker環境構築のためのファイルと、問題があるページのhtmlファイルです。

docker-compose.yml

version: '3' services: flask: build: . command: python3 app/app.py ports: - "5000:5000" volumes: - ./app:/app tty: true container_name: CNN-app-with-flask

Dockerfile

FROM python:3.7 COPY requirements.txt . RUN pip install --upgrade pip RUN pip install -r ./requirements.txt RUN mkdir /app

result.html

result.html

1{% extends "layout.html" %} 2{% block content %} 3<div class="container"> 4 <div class="col content"> 5 <h1>判定結果</h1> 6 {{result}} 7 <p><img src="{{filepath}}"></p> 8 <form method="get" action="/"> 9 <button class="submit">戻る</button> 10 </form> 11 </div> 12</div> 13{% endblock %}

こちらのファイルの7行目のfilepathでしっかりと画像が入っているファイルが指定されております。

どなたかご教授お願い致します。

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

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

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

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

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

sukekeke0

2020/11/09 03:36

> こちらのファイルの7行目のfilepathでしっかりと画像が入っているファイルが指定されております。 この画像ファイルがある場所はどこでしょう。dockerコンテナ上ですか、それともホスト上ですか? 実はホスト上で、かつdockerコンテナからアクセス不可のパスでしたというオチはないと思って良いでしょうか?
Fukada

2020/11/09 04:03 編集

Dockerコンテナ上にあることを確認しております。 filepathをそのまま出力させると正しいパスが返ってくることも確認しております。
guest

回答1

0

ベストアンサー

画像ファイルをどこに配置しているかわかりませんが、テキトーにstaticとかDIR掘って、そこに配置すれば問題なかったりしませんかね?

提示の情報では中途半端すぎるので、問題の現象が発生する最小の構成と手順を示したほうが回答がもらえやすいかと思います。

ちなみに、私の環境で下記を試してみましたが問題なく画像が表示されました。

◆実行結果

<環境>

console

1$ uname -a 2Linux localhost.localdomain 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux 3 4$ cat /etc/redhat-release 5CentOS Linux release 7.8.2003 (Core) 6 7$ docker -v 8Docker version 19.03.13, build 4484c46d9d 9 10$ docker-compose -v 11docker-compose version 1.18.0, build 8dd22a9 12 13$ ip -f inet addr show dev enp0s8 143: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 15 inet 192.168.56.101/24 brd 192.168.56.255 scope global noprefixroute dynamic enp0s8 16 valid_lft 472sec preferred_lft 472sec

<DIR構成>

console

1-+ 2 +-- Dockerfile 3 +-- app 4 | +-- app.py 5 | +-- static 6 | | +-- teratail.png 7 | +-- templates 8 | +-- layout.html 9 | +-- result.html 10 +-- docker-compose.yml 11 +-- requirements.txt 12

console

1$ cat Dockerfile 2FROM python:3.7 3 4COPY requirements.txt . 5RUN pip install --upgrade pip 6RUN pip install -r ./requirements.txt 7 8RUN mkdir /app 9 10$ cat docker-compose.yml 11version: '3' 12 13services: 14 flask: 15 build: . 16 command: python3 app/app.py 17 ports: 18 - "5000:5000" 19 volumes: 20 - ./app:/app 21 tty: true 22 container_name: CNN-app-with-flask 23 24$ cat requirements.txt 25flask 26 27$ cat app/app.py 28#!/usr/bin/python 29from flask import Flask, render_template 30 31app = Flask(__name__) 32 33@app.route('/') 34def hello(): 35 filepath = "/static/teratail.png" 36 return render_template('result.html', title='flask test', filepath=filepath) 37 38if __name__ == "__main__": 39 app.run(debug=True, host='0.0.0.0') 40 41$ cat app/templates/layout.html 42<!doctype html> 43<html> 44<head> 45<title>{{ title }}</title> 46</head> 47<body> 48{% block content %} 49<!-- main contents --> 50{% endblock %} 51</body> 52</html> 53 54$ cat app/templates/result.html 55{% extends "layout.html" %} 56{% block content %} 57<div class="container"> 58 <div class="col content"> 59 <h1>判定結果</h1> 60 {{result}} 61 <p><img src="{{filepath}}"></p> 62 <form method="get" action="/"> 63 <button class="submit">戻る</button> 64 </form> 65 </div> 66</div> 67{% endblock %}

<手順>

console

1# docker-compose build 2# docker-compose up

<結果>
teratail.pngはteratailのロゴファイルです。
イメージ説明

投稿2020/11/09 13:34

編集2020/11/10 14:07
sukekeke0

総合スコア331

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

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

Fukada

2020/11/12 10:00

表示させることができました。 ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問