私のウェブサイトのドッカーを試してみたいです。私は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
しかし、この場合、コンテナを出荷し、env変数を設定する必要があります。私が理解している限り、ドッカーの主なアイデアは構成なしで出荷され実行されるだけです。または、env変数が存在しない場合、デフォルト値を設定できますか? – Loik
ドッカーの画像は同じままです。これは、環境変数ベースの設定を期待するアプリケーションです。また、環境変数が渡されない場合、アプリケーションの中で、実動構成をデフォルトとして使用することもできます。ただし、チーム内の全員とプロダクションの資格情報を共有するため、安全ではありません。 Docker composeは、アプリケーションスタックを管理し、メインアプリケーションが起動する前にすべての依存関係を起動するために使用されます。 –
申し訳ありませんが、私はそれを取得しません。たとえば、map mysql ports 3306:3306が必要です。ENV_DEVが存在し、TRUEに等しい場合のみです。これに対して私は何をすべきですか? ドッカーハブからmysql:5.7イメージに基づいて自分自身のmysql:5.7イメージを作成します。私のmysqlイメージのdockerfileチェック変数の内側より、変数が真の場合はポートを公開します。 – Loik