2016-06-29 7 views
0

Ansibleを使って自分のプロジェクト(project-to-deployと呼ぶ)を配備したいと思います。docker-compose.ymlを含む危険なプロジェクトを展開する

project-to-deployは、docker-compose.ymlファイルを使用してローカルで実行できます。具体的には、docker-container内に次のボリュームをマウントします。

version: "2" 
services: 
    database: 
    image: mysql:5.6 
     volumes: 
     - ./docker/mysql.init.d:/docker-entrypoint-initdb.d 
    messages: 
     image: private.repo/project-to-deploy:latest 

ここでは何も役に立ちません。プロジェクトを実行するには:docker-compose up。 プロジェクトのdocker imageを作成しました(プロジェクト内のすべてのファイルを新しく作成したdocker imageにコピーします)、private.repo/project-to-deploy:latestにアップロードしました。

ここでは、アニシブルな部分があります。実行するプロジェクトのために
、私が必要:

  1. ドッキングウィンドウの画像
  2. MySQLインスタンス(以下私のdocker-compose.ymlの一部を参照してください)私のdocker-compose.yml(上記)で

、それはかなりありますそうするのは簡単です。私はちょうど2つのサービス(データベースとproject-to-deploy)を作成し、それらをリンクします。

Ansibleでどうすればいいですか?

私はまず、物事が画像フェッチすることです。そして、

- name: Docker - pull project image 
    docker: 
    image: "private.repo/project-to-deploy:latest" 
    state: restarted 
    pull: always 

を、どのように私は MySQLのドッキングウィンドウの画像がproject-to-deployからファイルを必要とすることを知って、これにMySQLのドッキングウィンドウの画像をリンクすることができますか?

別の方法で考えている場合は、お気軽にご意見をお寄せください。

答えて

1

少し修正すると、dockerモジュールはコンテナを実行するためのモジュールです。この例ではイメージを取得するだけではありません。実際にイメージを引っ張って、コンテナを作成して実行しています。

これは通常、必要なIPアドレス、ポート、認証情報などを使って各コンテナの設定ファイルをテンプレート化してお互いに通信するために必要なすべての情報を提供することによってこれを達成します。

あなたの例では接続がほとんどないため、あなたの可能な作業でlinksオプションを設定できます。あなたは "メッセージ"コンテナ側でそれを設定する必要があります。

- name: Docker - start MySQL container 
    docker: 
    name: database 
    image: "mysql:5.6" 
    state: restarted 
    volumes: 
    - /path/to/docker/mysql.init.d:/docker-entrypoint-initdb.d 
    pull: always 

- name: Docker - start project container 
    docker: 
    name: messages 
    image: "private.repo/project-to-deploy:latest" 
    state: restarted 
    pull: always 
    links: 
    - database 
関連する問題