私はかなりの間これを苦労しました。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.私がこのプロジェクトをもっと楽にする方法をお気軽にお聞かせください。
あなたのDjangoサーバはどのホスト/インタフェースで動作していますか? (0.0.0.0にする必要があります、デフォルトですか?)私はそれがFlaskの例ではないことを知っています。 – johnharris85
モンゴーは「27017」を聞いているかもしれないのでしょうか? –
Trueですが、OPはDjangoに接続しようとしています。 – johnharris85