작성
·
714
1
브라우저에서 접속을 시도하면 internal server error 라고 뜨면서 정상작동하지 않습니다. 위 로그 기록 참고하셔서 조치 방법을 알려주시면 고맙겠습니다.
답변 2
0
확인이 늦었습니다^^;
===docker-compose.yml===
version: '3'
services:
my_flask:
image: flask-redis
ports:
- 50027:5000
my_redis:
image: redis
===app.py===
import time
import redis
from flask import Flask
app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)
def get_hit_count():
retries = 5
while True:
try:
return cache.incr('hits')
except redis.exceptions.ConnectionError as exc:
if retries == 0:
raise exc
retries -= 1
time.sleep(0.5)
@app.route('/')
def hello():
count = get_hit_count()
return 'Hello World! I have been seen {} times.\n'.format(count)
===Dockerfile===
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["flask", "run"]
0
오류 로그를 보니 웹 서버가 redis에 접속하지 못한 상황으로 보입니다.
작성하신 docker-compose.yml 파일을 적어주시면 문제점이 무엇인지 살펴보는 데 도움이 되겠습니다.
services에서 redis 서비스의 이름을 'my_redis'라고 하셨네요~ 서비스의 이름이 곧 서버 이름이라고 보시면 되는데요. app.py 파일에 host='redis'라고 적어두었기 때문에 'redis'로 접속하려다 실패하는 상황입니다.
이 부분을 docker-compose.yml의 'my_redis'를 'redis'로 바꿔주시기만 하면 잘 작동하겠습니다. (아니면 반대로 app.py 파일의 'redis'를 'my_redis'로 바꾸셔도 되겠습니다.)