0

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

enter image description here

Shahrear Bin Amin
  • 1,075
  • 13
  • 31

1 Answers1

2

The Flask must be bound to 0.0.0.0. Not to the 127.0.0.1.

Marat Mkhitaryan
  • 844
  • 2
  • 11
  • 25