2016-09-20 8 views
1

私のウェブサイトのドッカーを試してみたいです。私はphp, nginx, mysqlを使用します。私はドッカーを設定して、私は自分のウェブサイトをローカルで実行しました。今私はウェブサイトをプロダクションに公開したいと思っています。 私は、開発者と製品版との間にいくつかの違いがあります:生産と開発のドッカーの違いを使用して

  • 私は(デバッグ用)開発者モードでコンテナ内MySQLへ接続できるようにする必要がありますが、本番モードのmysqlでセキュリティ
  • のために外部から隔離されなければなりませんアドレスapp.devで私のWebサイトを開き、開発者マシンでnginx-proxyイメージを使用したいが、プロダクションではパフォーマンス向上のためにnginx-proxyを使用しない。

ドッカーを1つのdocker-compose.ymlファイルで実行できますか? 開発者版と本番版の2種類のドッカー作成用ファイルを作成する必要がありますか?しかし、この場合、私はドッカーの利点を失う - 同じ環境evrywhere。 docker-compose-dev.ymlを変更した場合は、docker-compose-prod.ymlを変更することを忘れないでください。

マイドッキングウィンドウ-compose.yml:

version: '2' 
services: 
    app: 
     build: . 
     volumes: 
     - ./app:/app 
     container_name: app 
    app_nginx: 
     image: nginx 
     ports: 
     - "8080:80" 
     container_name: app_nginx 
     volumes: 
      - ./data/nginx:/etc/nginx/conf.d 
      - ./app:/app 
     environment: 
     - VIRTUAL_HOST=app.dev 
    app_db: 
     image: mysql:5.7 
     volumes: 
      - "./data/db:/var/lib/mysql" 
     restart: always 
     environment: 
      MYSQL_ROOT_PASSWORD: 
      MYSQL_ALLOW_EMPTY_PASSWORD: 1 
      MYSQL_DATABASE: "app_db" 
     container_name: app_db 
    nginx-proxy: 
     image: jwilder/nginx-proxy 
     container_name: nginx-proxy 
     ports: 
      - "80:80" 
     volumes: 
      - /var/run/docker.sock:/tmp/docker.sock:ro 

答えて

2

あなたは環境変数ベースの構成でこれを達成することができます。 通常、ステージングとプロダクションの異なる環境は、接続するデータベース、呼び出す外部サービス、エンドポイントと資格情報などの設定によってのみ異なります。

このような構成をすべてハードコードするのではなく、環境変数から読み込みます。したがって、ステージング環境と運用環境に異なる環境変数を持つ同じドッカー作成ファイルを使用することができます。

RancherによってRancher Labs http://rancher.com/にアクセスして環境を管理することもできます。

+0

しかし、この場合、コンテナを出荷し、env変数を設定する必要があります。私が理解している限り、ドッカーの主なアイデアは構成なしで出荷され実行されるだけです。または、env変数が存在しない場合、デフォルト値を設定できますか? – Loik

+0

ドッカーの画像は同じままです。これは、環境変数ベースの設定を期待するアプリケーションです。また、環境変数が渡されない場合、アプリケーションの中で、実動構成をデフォルトとして使用することもできます。ただし、チーム内の全員とプロダクションの資格情報を共有するため、安全ではありません。 Docker composeは、アプリケーションスタックを管理し、メインアプリケーションが起動する前にすべての依存関係を起動するために使用されます。 –

+0

申し訳ありませんが、私はそれを取得しません。たとえば、map mysql ports 3306:3306が必要です。ENV_DEVが存在し、TRUEに等しい場合のみです。これに対して私は何をすべきですか? ドッカーハブからmysql:5.7イメージに基づいて自分自身のmysql:5.7イメージを作成します。私のmysqlイメージのdockerfileチェック変数の内側より、変数が真の場合はポートを公開します。 – Loik

関連する問題