2016-11-04 5 views
2

私はSymfony3でアプリケーションを開発したのでここに来ました。また、アプリの導入についていくつか質問があります。 実際に私がドッキングウィンドウ-コンを使用します。dockerを使ったsymfonyアプリケーションのデプロイ

version: '2' 

services: 
    nginx: 
     build: ./docker/nginx/ 
     ports: 
      - 8081:80 
     volumes: 
      - .:/home/docker:ro 
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro 
      - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf:ro 
     networks: 
      - default 

    php: 
     build: ./docker/php/ 
     volumes: 
      - .:/home/docker:rw 
      - ./docker/php/php.ini:/usr/local/etc/php/conf.d/custom.ini:ro 
     working_dir: /home/docker 
     networks: 
      - default 
     dns_search: 
      - php 

    db: 
     image: mariadb:latest 
     ports: 
      - 3307:3306 
     environment: 
      - MYSQL_ROOT_PASSWORD=collectionManager 
      - MYSQL_USER=collectionManager 
      - MYSQL_PASSWORD=collectionManager 
      - MYSQL_DATABASE=collectionManager 
     volumes: 
      - mariadb_data:/var/lib/mysql 
     networks: 
      - default 
     dns_search: 
      - db 

    search: 
     build: ./docker/search/ 
     ports: 
      - 9200:9200 
      - 9300:9300 
     volumes: 
      - elasticsearch_data:/usr/share/elasticsearch/data 
     networks: 
      - default 
     dns_search: 
      - search 

volumes: 
    mariadb_data: 
     driver: local 
    elasticsearch_data: 
     driver: local 

networks: 
    default: 

nginxのは、エンジンがDBはMariaDBで、いくつかの拡張機能や作曲でPHP-FPMであり、いくつかのプラグインでElasticSearchを検索、明らかです。

Dockerを使用せずに展開する前に、私はwebappを展開するときにMegallanesまたはDeployerを使用しました。

ドッカーを使って、ドッカー作成用のファイルを使用してサーバー上のイメージとコンテナを再作成できます。また、コンテナをイメージとtarアーカイブに保存してサーバーに読み込むこともできます。 nginx、php-fpmは大丈夫ですが、elasticsearchとdbはどうですか?私はコードの将来の更新のためにデータを保持する必要があるからです。それでコードをデプロイするときに、私はDoctrine Migrationといくつかのコマンドを実行する必要があり、Deployerは他のinterrestingものと完全にそれを行います。 Dockerでコードをどのように展開するのですか?両方を使うことはできますか?コードのデプロイヤとサービスのDocker?

ありがとうございました。

答えて

2

まず初めに、ユーザ定義のネットワークを使用してみてください。組み込みDNSのような従来のリンクとは別の機能があります。つまり、同じネットワーク上の他のコンテナをアプリケーション内の名前とともに呼び出すことができます。ユーザ定義ネットワーク上のコンテナは、別のユーザ定義ネットワーク上のコンテナから分離されています。

docker network create --driver bridge <networkname> 

Dockerfileユーザー定義されたネットワークの例を使用する:

search: 
    restart: unless-stopped 
    build: ./docker/search/ 
    ports: 
     - "9200:9200" 
     - "9300:9300" 
    networks: 
     - <networkname> 

第二:ユーザー定義されたネットワークを作成するには

私はあなたDBとElasticSearchのためのdidntの利用データ量に気づきました。 永続的なデータを保持するには、特定のポイントにボリュームをマウントする必要があります。

第3:コンテナをエクスポートすると、マウントされたボリュームは含まれません。ボリュームデータをバックアップし、手動で移行する必要があります。バックアップボリュームデータに

docker run --rm --volumes-from db -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata 

上記コマンドは、コンテナを作成し、DBコンテナからボリュームをマウントし/backupの容器でカレントディレクトリをマウントに/dbdataのバックアップを作成するubuntu imagetarコマンドを使用しあなたのドッカーホストからマウントされている/backupの中にある(コンテナをdbdirectoryに変更することを検討してください)操作が完了した後、一時的なコンテナが削除されます(--rmスイッチを使用してバックアップを作成するために使用したubuntuコンテナ)。

をあなたが遠隔地にtarアーカイブをコピーし、空のマウントされたボリュームを使用してコンテナを作成します。復元するに

。次のコマンドを使用して、そのボリューム内のtarアーカイブを抽出します。

docker run --rm --volumes-from dbstore2 -v $(pwd):/backup ubuntu bash -c "cd /dbdata && tar xvf /backup/backup.tar --strip 1" 
+0

こんにちは、私はElasticSearchとMariadbのボリュームマウントをしてくれてありがとうございます。しかし、私は最初のポイント、ユーザー定義のネットワークを理解していないのですか? – mpiot

+0

詳細情報で回答を編集しました。 –

+0

自分のコードを編集し、ネットワークとボリュームを使用しました。しかし、私は自分のソースコードをどうすればいいのか分かりません。/ – mpiot

関連する問題