私はdockerを初めて使用するので、これは少し基本的な質問に聞こえるかもしれません。
いくつかのコマンドラインパラメーターを受け取り、さまざまなサービスを提供できるVS.Netcore2コンソールアプリケーションがあります。したがって、通常のコマンドプロンプトでは、次のようなものを実行できます。
c:>dotnet myapplication.dll 5000 .\mydb1.db c:>dotnet myapplication.dll 5001 .\mydb2.db
これにより、ポート5000
&にこのアプリケーションリストの2つのインスタンスが作成されます5001
。
このアプリケーション用に1つのDockerコンテナーを作成し、そのイメージの複数のインスタンスを実行して、このパラメーターをコマンドラインとしてコマンドに渡すことができるようにしますdocker run
。ただし、docker-compose.yml
またはでこれを構成する方法がわかりません。Dockerfile
DockerFile
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80
# ignoring some of the code here
ENTRYPOINT ["dotnet", "myapplication.dll"]
docker-Compose.yml
version: '3.4'
services:
my.app:
image: ${DOCKER_REGISTRY}my/app
ports:
- 5000:80
build:
context: .
dockerfile: dir/Dockerfile
コマンドライン引数の組み合わせごとに1つずつ複数の画像を作成することは避けようとしています。だから私が探していることを達成することは可能ですか?
Dockerコンテナーは、エントリーポイントとコマンドで開始されます。コンテナが実際に起動すると、それらは単純に連結されます。のENTRYPOINTがDockerfile
単一のコマンドのように構成されている場合、Dockerfile
またはのCMDにはそれcommand:
に対するdocker-compose.yml
引数が含まれます。
これは、次のように設定できる必要があることを意味しますdocker-compose.yml
。
services:
my.app1:
image: ${DOCKER_REGISTRY}my/app
ports:
- 5000:80
command: [80, db1.db]
my.app2:
image: ${DOCKER_REGISTRY}my/app
ports:
- 5001:80
command: [80, db2.db]
(補足:プログラムのオプションの1つがリッスンするポートである場合、これはports:
仕様の2番目のポートと一致する必要があります。私の例では、両方を「通常の」HTTPでリッスンすることを選択しました。ports:
設定を使用して、ホストにポートし、再マップします。必要に応じて、http://my.app2/
デフォルトのHTTPポートのように、一方のコンテナがもう一方のコンテナに到達できます。)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加