2015-10-26 8 views
5

私はドッカーでhaproxyを実行しようとしています。私はここの指示に従っ:haproxy/docker有効なリスナーが見つかりません( 'bind'ディレクティブを確認してください)!終了

https://hub.docker.com/_/haproxy/

は私がドッキングウィンドウのイメージを構築することができたが、それを実行しようとした後。

docker run -d --link another_container:another_container --name mc-ha -v haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro my_own_haproxy:latest 

を使用して

私はこのエラーを取得する:

[ALERT] 298/054910 (1) : [haproxy.main()] No enabled listener found (check for 'bind' directives) ! Exiting. 

私はそれを探しますが、私が見つけた唯一のものは、HAプロキシのソースコードです。

は、ここに私のhaproxy.cfg

global 
    log /dev/log local0 
    log /dev/log local1 notice 
    chroot /var/lib/haproxy 
    stats socket /run/haproxy/admin.sock mode 660 level admin 
    stats timeout 30s 
    user haproxy 
    group haproxy 
    daemon 

    # Default SSL material locations 
    ca-base /etc/ssl/certs 
    crt-base /etc/ssl/private 

    # Default ciphers to use on SSL-enabled listening sockets. 
    # For more information, see ciphers(1SSL). 
    ssl-default-bind-ciphers kEECDH+aRSA+AES:kRSA+AES:+AES256:RC4-SHA:!kEDH:!LOW:!EXP:!MD5:!aNULL:!eNULL 

defaults 
    log  global 
    mode http 
    option httplog 
    option dontlognull 
    timeout connect 5000 
    timeout client 50000 
    timeout server 50000 
    errorfile 400 /etc/haproxy/errors/400.http 
    errorfile 403 /etc/haproxy/errors/403.http 
    errorfile 408 /etc/haproxy/errors/408.http 
    errorfile 500 /etc/haproxy/errors/500.http 
    errorfile 502 /etc/haproxy/errors/502.http 
    errorfile 503 /etc/haproxy/errors/503.http 
    errorfile 504 /etc/haproxy/errors/504.http 

frontend esNodes 
    bind *:8091 
    mode http 
    default_backend srNodes 

backend srNodes 
    mode http 
    balance roundrobin 
    option forwardfor 
    http-request set-header X-Forwarded-Port %[dst_port] 
    http-request add-header X-Forwarded-Proto https if { ssl_fc } 
    option httpchk HEAD/HTTP/1.1\r\nHost:localhost 
    server web01 0.0.0.0:10903/project/es check 

EDITです:ところで、私はまた私のドッキングウィンドウのホストIPにバックエンドノードのURLを変更してみました。しかし、まだ運がありません。

答えて

4

@Michaelコメントのおかげで私はこの問題を解決することができました。

まず、ドッカーファイルからhaproxyコマンドを削除します。そして、私はコンテナ内で手動でhaproxyコマンドを実行します。

Voila!私の設定ファイルはファイルではありません。そのディレクトリ。 LOL

私のドッカーのコマンド-vに問題があります。

は、私は完全なパスに変更し

-v FULL_PATH/customhaproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg

+0

まず、ドッカーファイルからhaproxyコマンドを削除します。 >>あなたは新しいドッカーファイルを作成しますか? – andNn

+0

@ naveen23はい、私はそれを修正しました。私はhaproxyを開始するための呼び出しを取り除きました。それから私は容器の中でハプロキシを始める。あなたが得るエラーはより詳細です。しかし、 "デーモンコマンドをBACKにする必要がある"というエラーを見つけたら、haproxyは起動しません。 –

+0

申し訳ありませんが、まだ明らかにそうではありません..ドッカーの実行-d -v /path/to/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:1.6 ..に変更する必要がありますか? – andNn

3

ドッカーファイルからdaemonキーワードを削除したい場合は、ドッカーがフォアグラウンドプロセスを実行している必要があります。そうでない場合、ドッカーはすぐに終了します。

あなたが見ているエラーメッセージは、ドッカーがどのポートにもハプロキシをバインドするよりも速く終了するからです。

+0

感謝をhaproxy.cfgを取り付けた、そうではありません問題。しかし、それは私に問題を見つけることができます。 dockerfileのhaproxyのデーモンを削除します。ドッカーのコンテナ内で手動で実行します。問題は、ドッカーの-vオプションです。 .cfgファイルの代わりにディレクトリを作成します –

0
ls -l /etc/ssl/certs 
ls -l /etc/ssl/private 
chmod -r 400 /etc/ssl/private 

おそらくも本命が、私のパーミッションを変更わからない。世界的に読めるsslキーでhaproxyを起動することは非常に安全性が低いので、起動を完全に無効にします。

+0

良いヒントですが、Andrewはすでに悪いホストボリュームマッピング(パスがありません)だった彼の問題に解決策を投稿しました。 – BMitch

1

私は実際にdocker-machineが、それ以外の場合は毎回私は、ボリュームとcontainerマウントオプションを実行していた(OSXを使用して)(両方とも、絶対パスと相対パスを試してみました)再起動しなければならなかった - それはディレクトリとして

関連する問題