2016-11-28 50 views
0

私はかなりの間これを苦労しました。Dockerのコンテナで接続が拒否されました

私はDjangoアプリケーションを持っており、これをコンテナにパッケージしようとしています。

問題は、特定のポート(8001)に公開するとホストが接続を拒否することです。

$ docker-machine ip default 
192.168.99.100 

ブラウザでカールしたり、ブラウザにアクセスしようとすると、接続が拒否されます。

C:\Users\meow>curl 192.168.99.100:8001 
curl: (7) Failed to connect to 192.168.99.100 port 8001: Connection refused 

最初の発言:私はDocker Toolboxを使用しています。

docker-compose.ymlファイルから始めましょう。

version: '2' 
services: 
    db: 
    build: ./MongoDocker 
    image: ockidocky_mongo 
    web: 
    build: ./DjangoDocker 
    image: ockidocky 
    #volumes: .:/srv 
    ports: 
    - 8001:8000 
    links: 
    - db 

2番目の発言:このファイルは、最初から許可の構築について何か問題がありました。これを修正するために、私は別々に画像を構築しました。 DjangoのためのDockerfileがthis他のチュートリアルに基づいています

# Based on this tutorial. https://devops.profitbricks.com/tutorials/creating-a-mongodb-docker-container-with-an-attached-storage-volume/ 
# Removed some sudo here and there because they are useless in Docker for Windows 

# Set the base image to use to Ubuntu 
FROM ubuntu:latest 
# Set the file mantainer 
MAINTAINER meow 

RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 && \ 
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee /etc/apt/sources.list.d/mongodb.list && \ 
apt-get update && apt-get install -y mongodb-org 


VOLUME ["/data/db"] 
WORKDIR /data 

EXPOSE 27017 
#Edited with --smallfiles (Check this issue https://github.com/dockerfile/mongodb/issues/9) 
CMD ["mongod", "--smallfiles"] 

docker build -t ockidocky . 
docker build -t ockidocky_mongo . 

ここモンゴためdockerfileです。

私はコードを含めませんが、動作します。

それは最後の行があると言うことが重要です:

ENTRYPOINT ["/docker-entrypoint.sh"] 

私はGunicornなしで実行するようにdocker-entrypoint.shを変更しました。この時点docker ps

echo Start Apache server. 
python manage.py runserver 

すべてが最高であることを私に伝えます:

CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS    PORTS     NAMES 
ddfdb20c2d7c  ockidocky    "/docker-entrypoint.s" 9 minutes ago  Up 9 minutes  0.0.0.0:8001->8000/tcp ockidocky_web_1 
2e2c2e7a5563  ockidocky_mongo  "mongod --smallfiles" 2 hours ago   Up 9 minutes  27017/tcp    ockidocky_db_1 

私はドッキングウィンドウを実行するとockidocky検査とポートについて、それが表示されます。

"Ports": { 
       "8000/tcp": [ 
        { 
         "HostIp": "0.0.0.0", 
         "HostPort": "8001" 
        } 
       ] 
      }, 

はに依存し、このですボリュームをマウントしますか?

これは本当にわかりませんが、Docker Toolboxで多くのエラーが発生します。

ビルド中にすべてがうまく動作することがわかりましたが、拒否された接続はそれに依存してはいけません。

EDIT:コンテナへconnectinc後 とps -auxでプロセスをリスト、これは私が見たものである。

USER  PID %CPU %MEM VSZ RSS TTY  STAT START TIME COMMAND 
root   1 0.7 3.0 218232 31340 ?  Ssl 20:15 0:01 python manage.p 
root   9 13.1 4.9 360788 50132 ?  Sl 20:15 0:26 /usr/bin/python 
root  15 0.0 0.2 18024 2596 ?  Ss 20:15 0:00 /bin/bash 
root  20 0.1 0.3 18216 3336 ?  Ss 20:17 0:00 /bin/bash 
root  33 0.0 0.2 34424 2884 ?  R+ 20:18 0:00 ps -aux 

P.S.私がこのプロジェクトをもっと楽にする方法をお気軽にお聞かせください。

+0

あなたのDjangoサーバはどのホスト/インタフェースで動作していますか? (0.0.0.0にする必要があります、デフォルトですか?)私はそれがFlaskの例ではないことを知っています。 – johnharris85

+0

モンゴーは「27017」を聞いているかもしれないのでしょうか? –

+0

Trueですが、OPはDjangoに接続しようとしています。 – johnharris85

答えて

1

私はこの問題を解決しました。私はdocker-entrypoint.shのこの行にドアを指定しなければならなかった理由を私は知らない。今

python manage.py runserver 0.0.0.0:8000 

docker logs ockidocky_web_1は、通常のDjangoの出力メッセージが表示されます。

誰かが適切な説明をすることができれば、私は編集してupvoteすることができます。

関連する問題