2017-11-09 6 views
0

Linux上でMSSQLを使用してAsp.Bet Core 2アプリケーションを実行中です。 CIとCDをAzureに設定したいと思います。 Visual Studio Team Servicesでdocker-composeタスクを定義しましたが、エラーが発生しています。DockerがVSTSタスクの失敗を作成する

2017-11-09T20:24:09.4725450Z ##[section]Starting: Create images 
2017-11-09T20:24:09.4801610Z ============================================================================== 
2017-11-09T20:24:09.4817660Z Task   : Docker Compose 
2017-11-09T20:24:09.4835680Z Description : Build, push or run multi-container Docker applications. Task can be used with Docker or Azure Container registry. 
2017-11-09T20:24:09.4852370Z Version  : 0.4.7 
2017-11-09T20:24:09.4867100Z Author  : Microsoft Corporation 
2017-11-09T20:24:09.4881820Z Help   : [More Information](https://go.microsoft.com/fwlink/?linkid=848006) 
2017-11-09T20:24:09.4897520Z ============================================================================== 
2017-11-09T20:24:10.5040990Z [command]/usr/local/bin/docker-compose -f /opt/vsts/work/1/s/docker-compose.yml -f /opt/vsts/work/1/s/docker-compose.ci.build.yml -f /home/vsts/agent/.docker-compose.1510259050468.yml -p Travelingowe build 
2017-11-09T20:24:10.8628630Z db uses an image, skipping 
2017-11-09T20:24:10.8646610Z Building api 
2017-11-09T20:24:10.9373040Z Step 1/7 : FROM microsoft/aspnetcore:2.0 
2017-11-09T20:24:12.0041790Z 2.0: Pulling from microsoft/aspnetcore 
2017-11-09T20:25:03.6328690Z Digest: sha256:e36cb8d1edcd1bfd7aea0412349482a9c1a601089d76d1a294067f5f7f1098a9 
2017-11-09T20:25:03.6497680Z Status: Downloaded newer image for microsoft/aspnetcore:2.0 
2017-11-09T20:25:03.6524910Z ---> e0e49def2506 
2017-11-09T20:25:03.6551560Z Step 2/7 : MAINTAINER Maciej Skuratowski <[email protected]> 
2017-11-09T20:25:03.7496070Z ---> Running in e7667861d293 
2017-11-09T20:25:03.9222120Z ---> 24ba03484562 
2017-11-09T20:25:03.9436840Z Removing intermediate container e7667861d293 
2017-11-09T20:25:03.9458600Z Step 3/7 : ARG source 
2017-11-09T20:25:04.0562980Z ---> Running in 7b57f9fc515f 
2017-11-09T20:25:04.2292420Z ---> 4d07188edf18 
2017-11-09T20:25:04.2503550Z Removing intermediate container 7b57f9fc515f 
2017-11-09T20:25:04.2581270Z Step 4/7 : WORKDIR /app 
2017-11-09T20:25:04.5347440Z ---> 4546b8dc771f 
2017-11-09T20:25:04.5527690Z Removing intermediate container 0a595d10e668 
2017-11-09T20:25:04.5558170Z Step 5/7 : EXPOSE 80 
2017-11-09T20:25:04.6765650Z ---> Running in aa273cc9ca2c 
2017-11-09T20:25:04.8330020Z ---> 6dd874db617e 
2017-11-09T20:25:04.8619290Z Removing intermediate container aa273cc9ca2c 
2017-11-09T20:25:04.8650100Z Step 6/7 : COPY ${source:-obj/Docker/publish} . 
2017-11-09T20:25:04.8686070Z Service 'api' failed to build: COPY failed: stat /var/lib/docker/tmp/docker-builder211771018/obj/Docker/publish: no such file or directory 
2017-11-09T20:25:04.9064960Z ##[error]db uses an image, skipping 
2017-11-09T20:25:04.9127660Z ##[error]Building api 
2017-11-09T20:25:04.9175860Z ##[error]Service 'api' failed to build: COPY failed: stat /var/lib/docker/tmp/docker-builder211771018/obj/Docker/publish: no such file or directory 
2017-11-09T20:25:04.9258880Z ##[error]/usr/local/bin/docker-compose failed with return code: 1 
2017-11-09T20:25:04.9325830Z ##[section]Finishing: Create images 

ここに私のドッキングウィンドウ-コンです:

version: '3' 

services: 
    api: 
    image: api 
    container_name: api 
    build: 
     context: ./Api 
     dockerfile: Dockerfile 
    ports: 
     - "8000:80" 
    depends_on: 
     - db 
    db: 
    image: "microsoft/mssql-server-linux" 
    container_name: mssql 
    environment: 
     SA_PASSWORD: "testtest3030!" 
     ACCEPT_EULA: "Y" 
     MSSQL_PID: "Developer" 
    ports: 
     - "127.0.0.1:8001:1433" 

とドッキングウィンドウ-compose.ci.build.ymlファイル:

version: '3' 

services: 

     ci-build: 
     image: microsoft/aspnetcore-build:1.0-1.1 
     volumes: 
      - .:/src 
     working_dir: /src 
     command: /bin/bash -c "dotnet restore ./Travelingowe.sln && dotnet publish ./Travelingowe.sln -c Release -o ./obj/Docker/publish" 

また、私は私のVSTSのドッキングウィンドウ・コンtaksを添付: enter image description here

私は間違っていると思いますか?

+0

あなたが引数として 'に/ var/libに/ドッキングウィンドウを/ tmp /ドッキングウィンドウ-builder211771018/OBJ /ドッカー/ publish'を渡すようだ、とこのパスは存在しません。それが有効であることを確認しましたか? – ingvar

+0

私のソリューションでこの問題を解決しますか? (詳細をステップごとに更新して、紺碧に展開する) –

答えて

0

私は数日前に同じ問題に直面しました。問題はDockerFile内にあります。たとえば、のは、私のファイルを見てみましょう:

FROM microsoft/aspnetcore:2.0 
ARG source 
WORKDIR /app 
EXPOSE 80 
COPY ${source:-obj/Docker/publish} . 
ENTRYPOINT [ "dotnet","MyWeb.Api.dll" ] 

ドッキングウィンドウは、あなたのCOPYコマンドで指定したパスを見つけることができない場合は、エラーが生成されます:

Service 'api' failed to build: COPY failed: stat /var/lib/docker/tmp/docker-builder211771018/obj/Docker/publish: no such file or directory 

だから、基本的に、あなたが必要なものビルドリリースパスを修正することです(ビルド後のファイルが正しいフォルダにあることを確認する必要があります)。

docker-compose build

それは、ソリューションをビルドしていない:あなたが実行している場合

はまた、問題があります。そのため、DockerFileは必要なフォルダを見つけることができません。ドッカーが作成する前に次のコマンドを実行すると、それが動作します。

dotnet publish ./YourSolution.sln -c Release -o ./obj/Docker/publish 
0

エラーについては、obj/Docker/publishフォルダやファイルがないことが原因です。

docker-compose.ci.build.ymlファイルは、プロジェクトをビルドするためのもので、docker-compose.ymlファイルは、プロジェクトを実行するために使用されている(レオニードの答えをチェックしてください)あなたは/実行を構築し、その後、Dokcer-コンタスクとdocker-compose.ci.build.ymlファイルを通じてプロジェクトをビルドする必要がありますDocker-composeタスクを使用してdocker-compose.ymlファイルの画像。

docker-compose.ci.build.yml、docker-composeについてのスレッドがあります。YMLとDockerfile:Asp.net core with linux docker container

更新:

アズールにプロジェクトを展開するためにこれらのステップを参照してください。

  1. が新しいビルド定義を作成します
  2. ドッカーメール作成タスクが(ドッカーがファイル作曲追加:**/docker-compose.ci.build.ymlを。アクション:Run a Docker Compose command;コマンド:run ci-build
  3. コピーファイルの追加タスク(ソースフォルダ:$(System.DefaultWorkingDirectory)/[your project path]/obj/Docker/publish;内容:**;対象F古い:$(Build.ArtifactStagingDirectory)
  4. 追加アーティファクトのタスクを作成するpublish(パスを公開するには:$(Build.ArtifactStagingDirectory)
  5. がdefinitioin新しいリリースを作成し
  6. Azureのアプリケーションサービスを展開するタスク(パッケージまたはフォルダの追加:$(System.DefaultWorkingDirectory)/[artifact build definition name]/[artifact name]を。チェックを外しPublish using Web Deploy option
関連する問題