I was trying to use docker for my flask backend. I've written a docker file that uses python:3.8 as build-python
then install all packages from requirements.txt
file. I was PostgreSQL
database then written in docker-compose.yml
file. When I put command in terminal
sudo docker-compose run
It shows api_1 | Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
which looks good. But I can't access this from my host pc It shows This site can’t be reached
Here is my docker-compose.yml
file
version: "2"
services:
api:
ports:
- 5000:5000
build:
context: ./mymeds
dockerfile: ./Dockerfile
restart: unless-stopped
networks:
- mymeds-backend-tier
depends_on:
- db
volumes:
- ./mymeds/app/:/app/app:Z
command: python manage.py run
env_file: common.env
db:
image: library/postgres:11.1-alpine
ports:
- 5432:5432
restart: unless-stopped
networks:
- mymeds-backend-tier
volumes:
- mymeds-db:/var/lib/postgresql
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=user123
volumes:
mymeds-db:
driver: local
networks:
mymeds-backend-tier:
driver: bridge
Here is my Dockerfile
for flask
backend
FROM python:3.8 as build-python
RUN apt-get -y update \
&& apt-get install -y gettext \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
COPY requirements.txt /app/
WORKDIR /app
RUN pip install -r requirements.txt
FROM python:3.8-slim
RUN apt-get update \
&& apt-get install -y \
libxml2 \
libssl1.1 \
libcairo2 \
libpango-1.0-0 \
libpangocairo-1.0-0 \
libgdk-pixbuf2.0-0 \
shared-mime-info \
mime-support \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
COPY . /app
COPY --from=build-python /usr/local/lib/python3.8/site-packages/ /usr/local/lib/python3.8/site-packages/
COPY --from=build-python /usr/local/bin/ /usr/local/bin/
WORKDIR /app
EXPOSE 5000
ENV PORT 5000