使用Docker容器

时间:2016-07-23 05:51:56

标签: python web-applications docker flask docker-compose

我正在尝试使用docker容器测试我的Web应用程序,但是当我尝试通过浏览器访问它时,我无法看到它。

docker compose文件看起来像

version: '2'
services:
db:
    image: postgres
    volumes:
        - ~/pgdata:/var/lib/postgresql/data/pgdata
    environment:
        POSTGRES_PASSWORD: "dbpassword"
        PGDATA: "/var/lib/postgresql/data/pgdata"
    ports:
        - "5432:5432"
web:
    build:
        context: .
        dockerfile: Dockerfile-web
    ports:
        - "5000:5000"
    volumes:
        - ./web:/web
    depends_on:
        - db
backend:
    build:
        context: .
        dockerfile: Dockerfile-backend
    volumes:
        - ./backend:/backend
    depends_on:
        - db

dockerfile-web看起来像

FROM python
ADD web/requirements.txt /web/requirements.txt
ADD web/bower.json /web/bower.json
WORKDIR /web

RUN \
  wget https://nodejs.org/dist/v4.4.7/node-v4.4.7-linux-x64.tar.xz && \
  tar xJf node-*.tar.xz -C /usr/local --strip-components=1 && \
  rm -f node-*.tar.xz

RUN npm install -g bower
RUN bower install --allow-root

RUN pip install -r requirements.txt
RUN export MYFLASKAPP_SECRET='makethewebsite'

CMD python manage.py server

我的docker机器的ip是

docker-machine ip 192.168.99.100

但是当我尝试的时候 http://192.168.99.100:5000/ 在我的浏览器中它只是说无法访问该网站。 好像是在拒绝连接。

当我在浏览器中ping我的数据库时,我可以在日志中看到我的数据库响应 http://192.168.99.100:5432/

所以我在容器内尝试了wget并得到了

$ docker exec 3bb5246a0623 wget http://localhost:5000/
--2016-07-23 05:25:16--  http://localhost:5000/
Resolving localhost (localhost)... ::1, 127.0.0.1
Connecting to localhost (localhost)|::1|:5000... failed: Connection refused.
Connecting to localhost (localhost)|127.0.0.1|:5000... connected.
HTTP request sent, awaiting response... 200 OK
Length: 34771 (34K) [text/html]
Saving to: ‘index.html.1’

0K .......... .......... .......... ...                  100% 5.37M=0.006s

2016-07-23 05:25:16 (5.37 MB/s) - ‘index.html.1’ saved [34771/34771]

任何人都知道我如何通过浏览器显示我的网络应用程序?

1 个答案:

答案 0 :(得分:0)

我必须为我的烧瓶应用程序启用外部可见性。 你可以在这里看到它 Can't connect to Flask web service, connection refused