2016-12-22 2 views
1

Docker作成ファイルからSolrサーバーのカスタムIPを設定する方法は?要するに

は私がドッキングウィンドウ-compose.ymlファイルからSolrのコンテナ用のカスタムIPを設定する方法を考え出す苦労を持っています。

詳細

我々はドッカーを経由して、Drupalのインスタンスのために、地元のdevの環境を展開します。

ブラウザから私は "従来の" http://localhost:8983/solrでSolrサーバーにアクセスできますが、Drupalはこの方法で接続できません。内部0.0.0.0、および127.0.0.1も機能しません。 DrupalがSolrサーバに接続できる唯一の方法はlan IP経由であり、明らかに各ステーションごとに異なりますが、Drupalの設定を更新する必要があるため、通信できるカスタムIPを指定することがベストだと思いましたそれは簡単ではありません。

私は、コンテナに静的IPを割り当てることは最良の解決策ではありませんが、solr.in.shで修正するよりも実現可能であると認識しており、これを達成する方法が異なる場合、

ほとんどの場合、私はdocker runと一緒にコマンドラインパラメータを使用できますが、docker-compose up -dでコンテナを実行する必要があります。これは最適な解決策ではありません。

コンポジションファイルのSolrコンテナセクションの例が理想的です。ありがとう。

注: は、設定方法の例を示していますが、わかりにくいです。私は決して専門家ではないことに留意してください。

ホストがLinux、ほとんどがUbuntuおよびDebianに基づいています。

編集:

要求されたとして、ここに私のコンファイルです:

version: "2" 

services: 
    db: 
    image: wodby/drupal-mariadb 
    environment: 
     MYSQL_RANDOM_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} 
     MYSQL_DATABASE: ${MYSQL_DATABASE} 
     MYSQL_USER: ${MYSQL_USER} 
     MYSQL_PASSWORD: ${MYSQL_PASSWORD} 
# command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci # The simple way to override the mariadb config. 
    volumes: 
     - ./data/mysql:/var/lib/mysql 
     - ./docker-runtime/mariadb-init:/docker-entrypoint-initdb.d # Place init .sql file(s) here. 

    php: 
    image: wodby/drupal-php:7.0 # Allowed: 7.0, 5.6. 
    environment: 
     DEPLOY_ENV: dev 
     PHP_SENDMAIL_PATH: /usr/sbin/sendmail -t -i -S mailhog:1025 
     PHP_XDEBUG_ENABLED: 1 # Set 1 to enable. 
#  PHP_SITE_NAME: dev 
#  PHP_HOST_NAME: localhost:8000 
#  PHP_DOCROOT: publiC# Relative path inside the /var/www/html/ directory. 
#  PHP_SENDMAIL_PATH: /usr/sbin/sendmail -t -i -S mailhog:1025 
     # PHP_XDEBUG_ENABLED: 1 
     # PHP_XDEBUG_AUTOSTART: 1 
     # PHP_XDEBUG_REMOTE_CONNECT_BACK: 0   # This is needed to respect remote.host setting bellow 
     # PHP_XDEBUG_REMOTE_HOST: "10.254.254.254" # You will also need to 'sudo ifconfig lo0 alias 10.254.254.254' 
    links: 
     - db 
    volumes: 
     - ./docroot:/var/www/html 

    nginx: 
    image: wodby/drupal-nginx 
    hostname: testing 
    environment: 
#  NGINX_SERVER_NAME: localhost 
     NGINX_UPSTREAM_NAME: php 
#  NGINX_DOCROOT: publiC# Relative path inside the /var/www/html/ directory. 
     DRUPAL_VERSION: 7 # Allowed: 7, 8. 
    volumes_from: 
     - php 
    ports: 
     - "${PORT_WEB}:80" 

    pma: 
    image: phpmyadmin/phpmyadmin 
    environment: 
     PMA_HOST: db 
     PMA_USER: ${MYSQL_USER} 
     PMA_PASSWORD: ${MYSQL_PASSWORD} 
    ports: 
     - '${PORT_PMA}:80' 
    links: 
     - db 

    mailhog: 
    image: mailhog/mailhog 
    ports: 
     - "8002:8025" 

    redis: 
    image: redis:3.2-alpine 

# memcached: 
# image: memcached:1.4-alpine 

# memcached-admin: 
# image: phynias/phpmemcachedadmin 
# ports: 
#  - "8006:80" 

    solr: 
    image: makuk66/docker-solr:4.10.3 
    volumes: 
     - ./docker-runtime/solr:/opt/solr/server/solr/mycores 
# entrypoint: 
#  - docker-entrypoint.sh 
#  - solr-precreate 
    ports: 
     - "8983:8983" 

# varnish: 
# image: wodby/drupal-varnish 
# depends_on: 
#  - nginx 
# environment: 
#  VARNISH_SECRET: secret 
#  VARNISH_BACKEND_HOST: nginx 
#  VARNISH_BACKEND_PORT: 80 
#  VARNISH_MEMORY_SIZE: 256M 
#  VARNISH_STORAGE_SIZE: 1024M 
# ports: 
#  - "8004:6081" # HTTP Proxy 
#  - "8005:6082" # Control terminal 

# sshd: 
# image: wodby/drupal-sshd 
# environment: 
#  SSH_PUB_KEY: "ssh-rsa ..." 
# volumes_from: 
#  - php 
# ports: 
#  - "8006:22" 
+0

静的IPを使わずに作成ファイルを投稿すると、ドッカーネットワークを追加する方法がわかります。 – NHol

+0

公式の文書に基づいてネットワークインターフェイスを作成できましたが、私のSolrサーバーは0.0.0.0のままで、希望のIPアドレスで公開されませんでした。私はcomposeファイルから除外しました。なぜなら、docsと同じで、期待どおりに動作しないからです。 –

+0

Solrサーバもドッキング・コンテナ内で実行されていますか?編集... Nm私はドッカーでそれを参照してください... –

答えて

0

がドッキングウィンドウの実行例は

IP_ADDRESS=$(hostname -I) 
docker run -d -p 8983:8983 solr bin/solr start -h ${IP_ADDRESS} -p 8983 
+0

こんにちはNhol、あなたの提案をありがとう。私は、作成ファイルを含めるように質問を編集しました。ドッカーの実行は解決策になりますが、優先されることはありません。私はそれをレーダーの下に置いておきます。他の選択肢がなければ、私は考慮に入れます。 –

0

の代わりに静的IPアドレスを割り当てることになり、あなたが使用することができますコンテナのIPを動的に取得する次のメソッド。

コンテナをリンクすると、ネットワーク情報(IP、ポート)が互いに共有されます。情報は環境変数として各コンテナに格納されます。

ドッカ-構成します。YML

service: 
    build: . 
    links: 
    - redis 
    ports: 
    - "3001:3001" 
redis: 
    build: . 
    ports: 
    - "6369:6369" 

サービスコンテナは、現在、以下の環境変数があります: "サービス" 内に格納され REDIS_PORT_6379_TCP_ADDR

ダイナミックPORT: "サービス" コンテナ内に格納されている

ダイナミックIPアドレス容器: REDIS_PORT_6379_TCP_PORT

あなたはいつでもコンテナに砲撃して自分自身を見てチェックすることができます。あなたのnodeJSインサイド

docker exec -it [ContainerID] bash 
printenv 

printenv

あなたはprocess.envを使用して接続機能では、環境変数を使用することができるアプリ。

let client = redis.createClient({ 
     port: process.env.REDIS_PORT_6379_TCP_ADDR, 
     host: process.env.REDIS_PORT_6379_TCP_PORT 
}); 

編集ここ

が更新ドッキングウィンドウ-compose.yml "Solrの" セクションです:

solr: 
    image: makuk66/docker-solr:4.10.3 
    volumes: 
     - ./docker-runtime/solr:/opt/solr/server/solr/mycores 
    entrypoint: 
     - docker-entrypoint.sh 
     - solr-precreate 
    ports: 
     - "8983:8983" 
    links: 
     - db 

"Solrの" コンテナが今とリンクされている上記の例では " db "コンテナ。これは「リンク」フィールドを使用して行われます。

ソルラーコンテナをdocker-compose.ymlファイル内の他のコンテナにリンクする場合も同じことができます。

これで、db容器の情報をsolrコンテナで利用できるようになりました(前述の環境変数を使用)。

リンクがなければ、printenvコマンドを実行したときに表示された環境変数は表示されません。

+0

あなたの答えをありがとう、残念なことにSolrコンテナの 'printenv'はIPに関係する環境変数を明らかにしません。 printenvについて知りませんでしたが、それは確かに有益ですが、Solrにとってはそれほど効果がないようです。あなたに感謝します。 –

+0

コンテナは「リンク」されていますか? –

+0

私はちょうどあなたの "ソル"ドッカーの作成セクションを見て、リンクが指定されていません。あなたはリンクを指定する必要があります...それは何をすべきかを含めるために答えを更新しないでください。 –

関連する問題