Vscode-docker: рдбрд┐рдмрдЧ рдХрдВрдЯреЗрдирд░

рдХреЛ рдирд┐рд░реНрдорд┐рдд 28 рдЬрдире░ 2017  ┬╖  22рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: microsoft/vscode-docker

рд╣реИрд▓реЛ рджреЛрд╕реНрддреЛрдВ,

рдореИрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдкреАрдЖрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдЧрд╛ ...

рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдЗрд╕реЗ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдиреЗрдЯ рдХреЛрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬреЛ (рдПрдХрд╛рдзрд┐рдХ) рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рд╣реЛрд╕реНрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдбреАрдмрдЧрд░ рдХреЛ рдЕрдВрддрддрдГ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдЬреИрд╕реЗ рдиреЛрдб.рдЬреЗрдПрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП ...

рдЕрдЧрд░ рдРрд╕рд╛ рд╣реИ, рддреЛ рдореИрдВ рд╢реБрд░реВ рдореЗрдВ рдиреЗрдЯ рдХреЛрд░ рдкрд╛рд░реНрдЯ рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рдЕрдиреНрдп рдЯреЗрдХ рдХреЗ рд▓рд┐рдП рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реВрдВред

рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡реАрдПрд╕2017 рдФрд░ рдбреЙрдХрд░ рдЯреВрд▓рд┐рдВрдЧ рдХреЗ рдЕрдиреБрднрд╡ рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рдмрдирд╛рдирд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЙрдХрд░ рдлрд╛рдЗрд▓реЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╣ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рдмреБрдирд┐рдпрд╛рджреА рд╣реИ), рдбреЙрдХрд░ (рд▓рд┐рдЦреЗрдВ) рдлрд╛рдЗрд▓реЛрдВ рд╕реЗ рд╕рдВрдкреВрд░реНрдг рдЗрдиреНрдлреНрд░рд╛ рдмрдирд╛рдПрдВ рдФрд░ рдлрд┐рд░ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд┐рдмрдЧрд░ред

рдпрд╣ рдХреИрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ?

рдзрдиреНрдпрд╡рд╛рдж

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рджреЛрд╕реНрддреЛрдВ рдореИрдВрдиреЗ рдЕрднреА рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ docker-compose рдХреЛ рд╕рдЪрд┐рддреНрд░ рдХрд┐рдпрд╛ рд╣реИред рдЖрдкрдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╛рдзрд╛рди рдХреЗ рдХрд┐рд╕реА рдПрдХрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЬрд┐рд╕рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдХрдВрдЯреЗрдирд░ рд╣реЛрддрд╛ рд╣реИред рд╡рд┐рдЪрд╛рд░ F5 рджрдмрд╛рдиреЗ рдФрд░ docker-compose рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдмрдЧрд░ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХрд╛ рд╣реИред

рдХрдИ рдХреЛрд╢рд┐рд╢реЛрдВ рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рдорд┐рд▓рд╛ рдЬреЛ VSCode рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдХрдореА рдХреЛ рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ/рд╣реИрдХреНрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реИред

рдпрд╣ рд╕рдорд╛рдзрд╛рди рд╕реНрддрд░ рдкрд░ рдПрдХ рдирдореВрдирд╛ docker-compose.yml рд╣реИ:

version: '3.1'

services:
  repository-api:
    image: repository-api:debug
    build:
      context: ./src/QUBIX.Repository.API/bin/PublishOutput/
      dockerfile: Dockerfile.debug
    ports: 
      - "10200:10200"
    environment: 
      - ASPNETCORE_ENVIRONMENT=Development
    volumes: 
      - ./src/QUBIX.Repository.API/bin/PublishOutput/:/app
      - ~/.nuget/packages:/root/.nuget/packages:ro
    depends_on: 
      - repository-silo
  repository-silo:
    image: repository-silo:debug
    build:
      context: ./src/QUBIX.Repository.Silo/bin/PublishOutput/
      dockerfile: Dockerfile.debug
    environment: 
      - QUBIX_REPOSITORY_MBR_CS
    volumes: 
      - ./src/QUBIX.Repository.Silo/bin/PublishOutput/:/app
      - ~/.nuget/packages:/root/.nuget/packages:ro
  repository-reader-silo:
    image: repository-reader-silo:debug
    build:
      context: ./src/QUBIX.Repository.Reader.Silo/bin/PublishOutput/
      dockerfile: Dockerfile.debug
    environment: 
      - QUBIX_REPOSITORY_READER_MBR_CS
      - QUBIX_REPOSITORY_READER_DOCDB_EP
      - QUBIX_REPOSITORY_READER_DOCDB_KEY
    volumes: 
      - ./src/QUBIX.Repository.Reader.Silo/bin/PublishOutput/:/app
      - ~/.nuget/packages:/root/.nuget/packages:ro

рдпрд╣ Dockerfile.debug :

FROM microsoft/dotnet:1.1-sdk-msbuild
ENV NUGET_XMLDOC_MODE=skip 
ARG CLRDBG_VERSION=VS2015U2
WORKDIR /clrdbg
RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        unzip \
    && rm -rf /var/lib/apt/lists/* \
    && curl -SL https://raw.githubusercontent.com/Microsoft/MIEngine/getclrdbg-release/scripts/GetClrDbg.sh --output GetClrDbg.sh \
    && chmod 700 GetClrDbg.sh \
    && ./GetClrDbg.sh $CLRDBG_VERSION \
    && rm GetClrDbg.sh
WORKDIR /app
ENTRYPOINT ["tail", "-f", "/dev/null"]

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕рдореЗрдВ рдХрдИ рд╕реЗрд╡рд╛рдПрдВ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдбреАрдмрдЧрд░ рдкреЛрд░реНрдЯ рдЦреБрд▓рд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ DockerFile.debug рдореВрд▓ рд░реВрдк рд╕реЗ рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдЗрд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЬреАрд╡рд┐рдд рд░рдЦрддрд╛ рд╣реИред рдпрд╣ рдбреАрдмрдЧрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП getclrdbg.sh рднреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИ (рд╣рд╛рдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ .net рдХреЛрд░ рдПрд╕рдбреАрдХреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛрдЬрд╝ рдФрд░ рд▓рд┐рдирдХреНрд╕ рдХрдВрдЯреЗрдирд░ рджреЛрдиреЛрдВ рдореЗрдВ clrdbg рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред рд╡реЙрд▓реНрдпреВрдо рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ /app рдореЗрдВ рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ docker-compose рдкрд░ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рджрд┐рди рдореЗрдВ рдПрдХ рдмрд╛рд░, рдЬрдм рдореИрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рд╕рдорд╛рдзрд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдЯрд░реНрдорд┐рдирд▓ рдЦреЛрд▓рддрд╛ рд╣реВрдВ рдФрд░ docker-compose up -d ред рдореБрдЭреЗ рдХрднреА рднреА рдХрдВрдЯреЗрдирд░ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдореБрдЭреЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╣реА рдХреБрдЫ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ ENV vars, рдЫрд╡рд┐, рдЖрджрд┐ред рдЕрдиреНрдпрдерд╛, рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣рд░ рд╕рдордп рд╕рдВрдкреВрд░реНрдг рдХрдВрдкреЛрдЬрд╝ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред (рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рд╣реИ, рддреЛ рдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП docker-compose build рдХрд░реЗрдВ)ред

рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рднреА рдХрдВрдЯреЗрдирд░ рдКрдкрд░ рдФрд░ рдЪрд▓ рд░рд╣реЗ рд╣реЛрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ VSCode рдХреЛ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпрд╣ рдореЗрд░рд╛ tasks.json :

{
    "version": "0.1.0",
    "isShellCommand": true,
    "command": "dotnet",
    "args":[],
    "tasks": [
        {
            "taskName": "publish",
            "args": [
                "${workspaceRoot}/QUBIX-Repository.sln", "-c", "Debug", "-o", "bin/PublishOutput"
            ],
            "isBuildCommand": true,
            "problemMatcher": "$msCompile"
        }
    ]
}

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ build рдмрдЬрд╛рдп, рдореИрдВ publish рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ .Net Core рдмрд┐рд▓реНрдб рдЖрдкрдХреА рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред рддреЛ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ clrdbg рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд╕рдВрджрд░реНрднрд┐рдд рдЕрд╕реЗрдВрдмрд▓реА рдирд╣реАрдВ рдвреВрдВрдв рдкрд╛рдПрдЧрд╛ред

рдЕрдм рдпрд╣ рдореЗрд░рд╛ launch.json :

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Repository-Silo",
            "type": "coreclr",
            "request": "launch",
            "cwd": "/app",
            "program": "/app/QUBIX.Repository.Silo.dll",
            "sourceFileMap": {
                "/app": "${workspaceRoot}/src/QUBIX.Repository.Silo"
            },
            "pipeTransport": {
                "pipeProgram": "/bin/bash",
                "pipeCwd": "${workspaceRoot}",
                "pipeArgs": [
                    "-c",
                    "docker exec -i qubixrepository_repository-silo_1 /clrdbg/clrdbg --interpreter=mi"
                ]
            }
        },
        {
            "name": "Repository-API",
            "type": "coreclr",
            "request": "launch",
            "cwd": "/app",
            "program": "/app/QUBIX.Repository.API.dll",
            "sourceFileMap": {
                "/app": "${workspaceRoot}/src/QUBIX.Repository.API"
            },
            "pipeTransport": {
                "pipeProgram": "/bin/bash",
                "pipeCwd": "${workspaceRoot}",
                "pipeArgs": [
                    "-c",
                    "docker exec -i qubixrepository_repository-api_1 /clrdbg/clrdbg --interpreter=mi"
                ]
            }
        },
        {
            "name": "Repository-Reader-Silo",
            "type": "coreclr",
            "request": "launch",
            "cwd": "/app",
            "program": "/app/QUBIX.Repository.Reader.Silo.dll",
            "sourceFileMap": {
                "/app": "${workspaceRoot}/src/QUBIX.Repository.Reader.Silo"
            },
            "pipeTransport": {
                "pipeProgram": "/bin/bash",
                "pipeCwd": "${workspaceRoot}",
                "pipeArgs": [
                    "-c",
                    "docker exec -i qubixrepository_repository-reader-silo_1 /clrdbg/clrdbg --interpreter=mi"
                ]
            }
        },
        {
            "name": "Repository-Reader-API",
            "type": "coreclr",
            "request": "launch",
            "cwd": "/app",
            "program": "/app/QUBIX.Repository.Reader.API.dll",
            "sourceFileMap": {
                "/app": "${workspaceRoot}/src/QUBIX.Repository.Reader.API"
            },
            "pipeTransport": {
                "pipeProgram": "/bin/bash",
                "pipeCwd": "${workspaceRoot}",
                "pipeArgs": [
                    "-c",
                    "docker exec -i qubixrepository_repository-reader-api_1 /clrdbg/clrdbg --interpreter=mi"
                ]
            }
        }
    ]
}

рдЕрдм рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ? рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ publishOutput рдХреЛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ /app рдореЗрдВ рдореИрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдЗрд╕рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛/рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЬреЛ рдореЗрд░реЗ рдкрд╛рд╕ docker-compose.yml , рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд▓реЙрдиреНрдЪ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИред рдпрд╣ рд▓реЙрдиреНрдЪ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдЙрд╕ рджреА рдЧрдИ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдореЗрдВ docker exec рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдФрд░ clrdbg рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рд░рд┐рдореЛрдЯ рдбреАрдмрдЧрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдбреАрдмрдЧрд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдЬрд┐рд╕реЗ /app рдореЗрдВ рдореИрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдорд╢реАрди рдкрд░ рдиреЗрдЯ рдХреЛрд░ рдбреАрдмрдЧрд░ рдмрдирд╛рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдбреАрдПрд▓рдПрд╕ рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рддреИрдирд╛рдд рд╣реИрдВ (рдбреАрдмрдЧрд░ рдХреЗ рдЕрдВрджрд░), рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдбреАрдмрдЧрд░ рдХреЛ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрд░реЛрдд рдХрд╣рд╛рдВ рд╣реИред

рдЗрд╕ рддрд░рд╣, рдЬрдм рдЖрдк рдбреАрдмрдЧрд░ рд╕рддреНрд░ рдореЗрдВ рд╕реНрдЯреЙрдк рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдЖрджреЗрд╢ docker exec рдЬрд┐рд╕рдиреЗ рд░рд┐рдореЛрдЯ рдбреАрдмрдЧрд░ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рди рдХрд┐ рдкреВрд░реЗ рдХрдВрдЯреЗрдирд░ рдХреЛред рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк F5 рджрдмрд╛рддреЗ рд╣реИрдВ рддреЛ рдХрдВрдЯреЗрдирд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдмрд╣реБрдд рддреЗрдЬ рд╣реЛ рдЬрд╛рддреА рд╣реИред

_рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреЛрдИ рдмрд╛рд╣рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдмрд╕ VSCode, C# рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдФрд░ Docker рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реИред

рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! :рд╢рд┐рдкрд┐рдЯ:

рдЕрдм рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖

  1. рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд▓реЙрдиреНрдЪ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдореИрдВ рд╕реЗрд╡рд╛ рдХреЗ рднреАрддрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕реАрдзреЗ рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП docker exec рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдореЗрдВ qubixrepository_repository-reader-api_1 )ред
  2. рдЖрдк рдЕрдкрдиреА рд░рдЪрдирд╛ рдХреЛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдореЗрдВ рд╕реНрдХреЗрд▓ рдХрд░рдиреЗ рдФрд░ рдПрдХ рд╣реА рд╕реЗрд╡рд╛ рдХреЗ рдХрдИ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдбреАрдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВред
  3. рдЖрдк F5 рдХреЛ рд╣рд┐рдЯ рдХрд░рдиреЗ рдФрд░ рдбреАрдмрдЧрд░ рдХреЛ рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВред рдЖрдкрдХреЛ VSCode рдбрд┐рдмрдЧрд░ рд╕реЗрдХреНрд╢рди рд╕реЗ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рд╢реБрд░реБрдЖрдд рдХрд░рдиреА рд╣реЛрдЧреАред ( compound рд▓реЙрдиреНрдЪ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдЧрд░ рдРрд╕рд╛ рд╣реЛрддрд╛ рднреА рд╣реИ, рддреЛ рдпрд╣ depends_on рд╕рдореНрдорд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ docker-compose рдирд┐рд░реНрднрд░рддрд╛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдШреЛрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдПрдХ рд╕реЗрд╡рд╛ рдЗрд╕рдХреЗ рдкрд╣рд▓реЗ рд╢реБрд░реВ рд╣реЛ рд╕рдХреЗ рдирд┐рд░реНрднрд░рддрд╛)ред
  4. рдкреНрд░реА-рд▓реЙрдиреНрдЪ рдХрд╛рд░реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдФрд░ рдбреАрдмрдЧрд░ рдЕрдиреБрднрд╡ рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ред

рд╡рд╛рдВрдЫрд┐рдд рдЕрдиреБрднрд╡:

  1. рдореИрдВ рдПрдХ docker-compose.yml рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реВрдВ, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдЫрд╡рд┐рдпреЛрдВ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реВрдВред
  2. рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП F5 рджрдмрд╛рдПрдВ
  3. dotnet build рд╕рдорд╛рдзрд╛рди рд╕реНрддрд░ рдкрд░ рд╣реЛрддрд╛ рд╣реИ
  4. docker-compose рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЕрдкрдбреЗрдЯ рд╣реИ, рдпрджрд┐ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕реЗрд╡рд╛рдПрдВ рдЪрд╛рд▓реВ рд╣реИрдВ, рддреЛ рдмрд╕ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рди рдЪрд▓рд╛рдПрдВред рдЕрдиреНрдпрдерд╛, docker-compose build рдФрд░ docker-compose up рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  5. docker-compose ps рд╕рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХрдВрдЯреЗрдирд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдбреАрдмрдЧрд░ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВред
  6. рдЬрдм рдЖрдк VSCode рдкрд░ рдбрд┐рдмрдЧрд░ рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреВрд░рд╕реНрде рдбреАрдмрдЧрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдорд╛рд░ рджреЗрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдХрдВрдЯреЗрдирд░ рдЕрднреА рднреА рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред
  7. рдЬрдм рдбрд┐рдмрдЧ рд╕рддреНрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реЛ, рддреЛ рдЖрдк рдПрдХ рд╣реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдбрд┐рдмрдЧрд░ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рдХрдИ рдмрд╛рд░ рд╕рдВрд▓рдЧреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╛рдиреА qubixrepository_repository-reader-api_1, qubixrepository_repository-reader-api_2, qubixrepository_repository-reader-api_N) рддрд╛рдХрд┐ рдЖрдк рд╡рд┐рддрд░рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдбреАрдмрдЧ рдХрд░ рд╕рдХреЗрдВред

рдХреНрдпрд╛ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рджреЛрд╕реНрддреЛрдВ? рд╣рдо рдЙрд╕ рдЕрдиреБрднрд╡ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдзрдиреНрдпрд╡рд╛рдж!

рд╕рднреА 22 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@galvesribeiro PR рдХрд╛ рд╣рдореЗрд╢рд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ! рдореИрдВ рд╡реАрдПрд╕2017 рдЕрдиреБрднрд╡ рд╕реЗ рдмрд╣реБрдд рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛/рд╡рд┐рдЪрд╛рд░ рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╣реЛрдЧрд╛ред

рд╣реИрд▓реЛ @lostintangent , рддрддреНрдХрд╛рд▓ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдЗрд╕ рдкреЛрд╕реНрдЯ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ https://blogs.msdn.microsoft.com/webdev/2016/11/16/new-docker-tools-for-visual-studio/

рдпрд╣ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ рдЖрдк рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдпрд╛ рд╕рдорд╛рдзрд╛рди рдкрд░ рд░рд╛рдЗрдЯ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдореЗрдВ рдбреЙрдХрд░ рд╕рдкреЛрд░реНрдЯ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдПрдХ рдмрд╛рд░ рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдмрд╕ F5 рджрдмрд╛рдПрдВ рдФрд░ рд╕рднреА "рдЬрд╛рджреВ" рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рд▓рдХреНрд╖рд┐рдд рдХрдВрдЯреЗрдирд░ рд╕реЗ рдЬреБрдбрд╝рд╛ рдбреАрдмрдЧрд░ рд╣реЛрддрд╛ рд╣реИред рд╡реАрдПрд╕2017 рдкрд░ рдпрд╣ рдХрдИ рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдЬреЛ docker-compose рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдкрд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЖрдк рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХ рд╣реА рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдХрдВрдЯреЗрдирд░ рднрд╛рдЧ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдбреАрдмрдЧ рдХрд░ рд╕рдХреЗрдВ ...

рдиреЛрдб рдХреЗ рд▓рд┐рдП, рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдПрдХ docker-compose.debug.yml рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рд╕рд╛рдЗрдЯ рдФрд░ рдбреАрдмрдЧрд░ рдкреЛрд░реНрдЯ рджреЛрдиреЛрдВ рдХреЛ рдЦреЛрд▓реЗрдЧрд╛ рдФрд░ рдбрд┐рдмрдЧ рд╕реНрд╡рд┐рдЪ рдХреЗ рд╕рд╛рде рдиреЛрдб рдЪрд▓рд╛рдПрдЧрд╛ред рдЖрдк рдкреВрд░реНрд╡ рд▓реЙрдиреНрдЪ рдХрд╛рд░реНрдп рдХреЗ рд░реВрдк рдореЗрдВ yml рдлрд╝рд╛рдЗрд▓ рдкрд░ docker-compose up рдЪрд▓рд╛рдХрд░ рдбреАрдмрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рд╡реАрдПрд╕ рдХреЛрдб рдЗрд╕реЗ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕реА # рдХреЗ рд▓рд┐рдП, рдПрдХ рд╣реА рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ... рд╕рд╣реА рдХрд╛рд░реНрдп рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ, docker-compose.debug.yml, рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ launch.json рдореЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред

@lostintangent рдореЗрд░реЗ рд░реЗрдкреЛ рдХреЛ рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ: https://github.com/spboyer/dockerdebugapp
рдЗрд╕рдореЗрдВ рдореВрд▓ рдЫрд╡рд┐рдпрд╛рдВ рд╣реИрдВ рдФрд░ рдбреАрдмрдЧрд░ рдХреЛ рд╡реАрдПрд╕ рдХреЛрдб рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЙрдЪрд┐рдд рдбреАрдмрдЧ рд▓рд┐рдЦреЗрдВред .NET рдХреЛрд░ рдХреЗ рд▓рд┐рдП рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЬрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВред

рдардВрдбрд╛!

рджреЛрд╕реНрддреЛрдВ рдореИрдВрдиреЗ рдЕрднреА рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ docker-compose рдХреЛ рд╕рдЪрд┐рддреНрд░ рдХрд┐рдпрд╛ рд╣реИред рдЖрдкрдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╛рдзрд╛рди рдХреЗ рдХрд┐рд╕реА рдПрдХрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЬрд┐рд╕рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдХрдВрдЯреЗрдирд░ рд╣реЛрддрд╛ рд╣реИред рд╡рд┐рдЪрд╛рд░ F5 рджрдмрд╛рдиреЗ рдФрд░ docker-compose рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдмрдЧрд░ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХрд╛ рд╣реИред

рдХрдИ рдХреЛрд╢рд┐рд╢реЛрдВ рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рдорд┐рд▓рд╛ рдЬреЛ VSCode рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдХрдореА рдХреЛ рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ/рд╣реИрдХреНрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реИред

рдпрд╣ рд╕рдорд╛рдзрд╛рди рд╕реНрддрд░ рдкрд░ рдПрдХ рдирдореВрдирд╛ docker-compose.yml рд╣реИ:

version: '3.1'

services:
  repository-api:
    image: repository-api:debug
    build:
      context: ./src/QUBIX.Repository.API/bin/PublishOutput/
      dockerfile: Dockerfile.debug
    ports: 
      - "10200:10200"
    environment: 
      - ASPNETCORE_ENVIRONMENT=Development
    volumes: 
      - ./src/QUBIX.Repository.API/bin/PublishOutput/:/app
      - ~/.nuget/packages:/root/.nuget/packages:ro
    depends_on: 
      - repository-silo
  repository-silo:
    image: repository-silo:debug
    build:
      context: ./src/QUBIX.Repository.Silo/bin/PublishOutput/
      dockerfile: Dockerfile.debug
    environment: 
      - QUBIX_REPOSITORY_MBR_CS
    volumes: 
      - ./src/QUBIX.Repository.Silo/bin/PublishOutput/:/app
      - ~/.nuget/packages:/root/.nuget/packages:ro
  repository-reader-silo:
    image: repository-reader-silo:debug
    build:
      context: ./src/QUBIX.Repository.Reader.Silo/bin/PublishOutput/
      dockerfile: Dockerfile.debug
    environment: 
      - QUBIX_REPOSITORY_READER_MBR_CS
      - QUBIX_REPOSITORY_READER_DOCDB_EP
      - QUBIX_REPOSITORY_READER_DOCDB_KEY
    volumes: 
      - ./src/QUBIX.Repository.Reader.Silo/bin/PublishOutput/:/app
      - ~/.nuget/packages:/root/.nuget/packages:ro

рдпрд╣ Dockerfile.debug :

FROM microsoft/dotnet:1.1-sdk-msbuild
ENV NUGET_XMLDOC_MODE=skip 
ARG CLRDBG_VERSION=VS2015U2
WORKDIR /clrdbg
RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        unzip \
    && rm -rf /var/lib/apt/lists/* \
    && curl -SL https://raw.githubusercontent.com/Microsoft/MIEngine/getclrdbg-release/scripts/GetClrDbg.sh --output GetClrDbg.sh \
    && chmod 700 GetClrDbg.sh \
    && ./GetClrDbg.sh $CLRDBG_VERSION \
    && rm GetClrDbg.sh
WORKDIR /app
ENTRYPOINT ["tail", "-f", "/dev/null"]

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕рдореЗрдВ рдХрдИ рд╕реЗрд╡рд╛рдПрдВ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдбреАрдмрдЧрд░ рдкреЛрд░реНрдЯ рдЦреБрд▓рд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ DockerFile.debug рдореВрд▓ рд░реВрдк рд╕реЗ рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдЗрд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЬреАрд╡рд┐рдд рд░рдЦрддрд╛ рд╣реИред рдпрд╣ рдбреАрдмрдЧрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП getclrdbg.sh рднреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИ (рд╣рд╛рдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ .net рдХреЛрд░ рдПрд╕рдбреАрдХреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛрдЬрд╝ рдФрд░ рд▓рд┐рдирдХреНрд╕ рдХрдВрдЯреЗрдирд░ рджреЛрдиреЛрдВ рдореЗрдВ clrdbg рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред рд╡реЙрд▓реНрдпреВрдо рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ /app рдореЗрдВ рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ docker-compose рдкрд░ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рджрд┐рди рдореЗрдВ рдПрдХ рдмрд╛рд░, рдЬрдм рдореИрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рд╕рдорд╛рдзрд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдЯрд░реНрдорд┐рдирд▓ рдЦреЛрд▓рддрд╛ рд╣реВрдВ рдФрд░ docker-compose up -d ред рдореБрдЭреЗ рдХрднреА рднреА рдХрдВрдЯреЗрдирд░ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдореБрдЭреЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╣реА рдХреБрдЫ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ ENV vars, рдЫрд╡рд┐, рдЖрджрд┐ред рдЕрдиреНрдпрдерд╛, рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣рд░ рд╕рдордп рд╕рдВрдкреВрд░реНрдг рдХрдВрдкреЛрдЬрд╝ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред (рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рд╣реИ, рддреЛ рдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП docker-compose build рдХрд░реЗрдВ)ред

рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рднреА рдХрдВрдЯреЗрдирд░ рдКрдкрд░ рдФрд░ рдЪрд▓ рд░рд╣реЗ рд╣реЛрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ VSCode рдХреЛ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпрд╣ рдореЗрд░рд╛ tasks.json :

{
    "version": "0.1.0",
    "isShellCommand": true,
    "command": "dotnet",
    "args":[],
    "tasks": [
        {
            "taskName": "publish",
            "args": [
                "${workspaceRoot}/QUBIX-Repository.sln", "-c", "Debug", "-o", "bin/PublishOutput"
            ],
            "isBuildCommand": true,
            "problemMatcher": "$msCompile"
        }
    ]
}

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ build рдмрдЬрд╛рдп, рдореИрдВ publish рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ .Net Core рдмрд┐рд▓реНрдб рдЖрдкрдХреА рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред рддреЛ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ clrdbg рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд╕рдВрджрд░реНрднрд┐рдд рдЕрд╕реЗрдВрдмрд▓реА рдирд╣реАрдВ рдвреВрдВрдв рдкрд╛рдПрдЧрд╛ред

рдЕрдм рдпрд╣ рдореЗрд░рд╛ launch.json :

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Repository-Silo",
            "type": "coreclr",
            "request": "launch",
            "cwd": "/app",
            "program": "/app/QUBIX.Repository.Silo.dll",
            "sourceFileMap": {
                "/app": "${workspaceRoot}/src/QUBIX.Repository.Silo"
            },
            "pipeTransport": {
                "pipeProgram": "/bin/bash",
                "pipeCwd": "${workspaceRoot}",
                "pipeArgs": [
                    "-c",
                    "docker exec -i qubixrepository_repository-silo_1 /clrdbg/clrdbg --interpreter=mi"
                ]
            }
        },
        {
            "name": "Repository-API",
            "type": "coreclr",
            "request": "launch",
            "cwd": "/app",
            "program": "/app/QUBIX.Repository.API.dll",
            "sourceFileMap": {
                "/app": "${workspaceRoot}/src/QUBIX.Repository.API"
            },
            "pipeTransport": {
                "pipeProgram": "/bin/bash",
                "pipeCwd": "${workspaceRoot}",
                "pipeArgs": [
                    "-c",
                    "docker exec -i qubixrepository_repository-api_1 /clrdbg/clrdbg --interpreter=mi"
                ]
            }
        },
        {
            "name": "Repository-Reader-Silo",
            "type": "coreclr",
            "request": "launch",
            "cwd": "/app",
            "program": "/app/QUBIX.Repository.Reader.Silo.dll",
            "sourceFileMap": {
                "/app": "${workspaceRoot}/src/QUBIX.Repository.Reader.Silo"
            },
            "pipeTransport": {
                "pipeProgram": "/bin/bash",
                "pipeCwd": "${workspaceRoot}",
                "pipeArgs": [
                    "-c",
                    "docker exec -i qubixrepository_repository-reader-silo_1 /clrdbg/clrdbg --interpreter=mi"
                ]
            }
        },
        {
            "name": "Repository-Reader-API",
            "type": "coreclr",
            "request": "launch",
            "cwd": "/app",
            "program": "/app/QUBIX.Repository.Reader.API.dll",
            "sourceFileMap": {
                "/app": "${workspaceRoot}/src/QUBIX.Repository.Reader.API"
            },
            "pipeTransport": {
                "pipeProgram": "/bin/bash",
                "pipeCwd": "${workspaceRoot}",
                "pipeArgs": [
                    "-c",
                    "docker exec -i qubixrepository_repository-reader-api_1 /clrdbg/clrdbg --interpreter=mi"
                ]
            }
        }
    ]
}

рдЕрдм рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ? рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ publishOutput рдХреЛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ /app рдореЗрдВ рдореИрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдЗрд╕рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛/рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЬреЛ рдореЗрд░реЗ рдкрд╛рд╕ docker-compose.yml , рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд▓реЙрдиреНрдЪ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИред рдпрд╣ рд▓реЙрдиреНрдЪ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдЙрд╕ рджреА рдЧрдИ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдореЗрдВ docker exec рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдФрд░ clrdbg рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рд░рд┐рдореЛрдЯ рдбреАрдмрдЧрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдбреАрдмрдЧрд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдЬрд┐рд╕реЗ /app рдореЗрдВ рдореИрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдорд╢реАрди рдкрд░ рдиреЗрдЯ рдХреЛрд░ рдбреАрдмрдЧрд░ рдмрдирд╛рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдбреАрдПрд▓рдПрд╕ рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рддреИрдирд╛рдд рд╣реИрдВ (рдбреАрдмрдЧрд░ рдХреЗ рдЕрдВрджрд░), рд╕реНрд░реЛрдд рдорд╛рдирдЪрд┐рддреНрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдбреАрдмрдЧрд░ рдХреЛ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрд░реЛрдд рдХрд╣рд╛рдВ рд╣реИред

рдЗрд╕ рддрд░рд╣, рдЬрдм рдЖрдк рдбреАрдмрдЧрд░ рд╕рддреНрд░ рдореЗрдВ рд╕реНрдЯреЙрдк рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдЖрджреЗрд╢ docker exec рдЬрд┐рд╕рдиреЗ рд░рд┐рдореЛрдЯ рдбреАрдмрдЧрд░ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рди рдХрд┐ рдкреВрд░реЗ рдХрдВрдЯреЗрдирд░ рдХреЛред рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк F5 рджрдмрд╛рддреЗ рд╣реИрдВ рддреЛ рдХрдВрдЯреЗрдирд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдмрд╣реБрдд рддреЗрдЬ рд╣реЛ рдЬрд╛рддреА рд╣реИред

_рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреЛрдИ рдмрд╛рд╣рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдмрд╕ VSCode, C# рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдФрд░ Docker рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реИред

рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! :рд╢рд┐рдкрд┐рдЯ:

рдЕрдм рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖

  1. рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд▓реЙрдиреНрдЪ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдореИрдВ рд╕реЗрд╡рд╛ рдХреЗ рднреАрддрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕реАрдзреЗ рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП docker exec рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдореЗрдВ qubixrepository_repository-reader-api_1 )ред
  2. рдЖрдк рдЕрдкрдиреА рд░рдЪрдирд╛ рдХреЛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдореЗрдВ рд╕реНрдХреЗрд▓ рдХрд░рдиреЗ рдФрд░ рдПрдХ рд╣реА рд╕реЗрд╡рд╛ рдХреЗ рдХрдИ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдбреАрдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВред
  3. рдЖрдк F5 рдХреЛ рд╣рд┐рдЯ рдХрд░рдиреЗ рдФрд░ рдбреАрдмрдЧрд░ рдХреЛ рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВред рдЖрдкрдХреЛ VSCode рдбрд┐рдмрдЧрд░ рд╕реЗрдХреНрд╢рди рд╕реЗ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рд╢реБрд░реБрдЖрдд рдХрд░рдиреА рд╣реЛрдЧреАред ( compound рд▓реЙрдиреНрдЪ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдЧрд░ рдРрд╕рд╛ рд╣реЛрддрд╛ рднреА рд╣реИ, рддреЛ рдпрд╣ depends_on рд╕рдореНрдорд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ docker-compose рдирд┐рд░реНрднрд░рддрд╛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдШреЛрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдПрдХ рд╕реЗрд╡рд╛ рдЗрд╕рдХреЗ рдкрд╣рд▓реЗ рд╢реБрд░реВ рд╣реЛ рд╕рдХреЗ рдирд┐рд░реНрднрд░рддрд╛)ред
  4. рдкреНрд░реА-рд▓реЙрдиреНрдЪ рдХрд╛рд░реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдФрд░ рдбреАрдмрдЧрд░ рдЕрдиреБрднрд╡ рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ред

рд╡рд╛рдВрдЫрд┐рдд рдЕрдиреБрднрд╡:

  1. рдореИрдВ рдПрдХ docker-compose.yml рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реВрдВ, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдЫрд╡рд┐рдпреЛрдВ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реВрдВред
  2. рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП F5 рджрдмрд╛рдПрдВ
  3. dotnet build рд╕рдорд╛рдзрд╛рди рд╕реНрддрд░ рдкрд░ рд╣реЛрддрд╛ рд╣реИ
  4. docker-compose рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЕрдкрдбреЗрдЯ рд╣реИ, рдпрджрд┐ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕реЗрд╡рд╛рдПрдВ рдЪрд╛рд▓реВ рд╣реИрдВ, рддреЛ рдмрд╕ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рди рдЪрд▓рд╛рдПрдВред рдЕрдиреНрдпрдерд╛, docker-compose build рдФрд░ docker-compose up рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  5. docker-compose ps рд╕рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХрдВрдЯреЗрдирд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдбреАрдмрдЧрд░ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВред
  6. рдЬрдм рдЖрдк VSCode рдкрд░ рдбрд┐рдмрдЧрд░ рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреВрд░рд╕реНрде рдбреАрдмрдЧрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдорд╛рд░ рджреЗрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдХрдВрдЯреЗрдирд░ рдЕрднреА рднреА рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред
  7. рдЬрдм рдбрд┐рдмрдЧ рд╕рддреНрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реЛ, рддреЛ рдЖрдк рдПрдХ рд╣реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдбрд┐рдмрдЧрд░ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рдХрдИ рдмрд╛рд░ рд╕рдВрд▓рдЧреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╛рдиреА qubixrepository_repository-reader-api_1, qubixrepository_repository-reader-api_2, qubixrepository_repository-reader-api_N) рддрд╛рдХрд┐ рдЖрдк рд╡рд┐рддрд░рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдбреАрдмрдЧ рдХрд░ рд╕рдХреЗрдВред

рдХреНрдпрд╛ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рджреЛрд╕реНрддреЛрдВ? рд╣рдо рдЙрд╕ рдЕрдиреБрднрд╡ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдзрдиреНрдпрд╡рд╛рдж!

@galvesribeiro
рдпрд╣ рдмрд╣реБ-рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рд╣реИ, рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рд╣реИ?

@ рд╢реЙрди-рдлреИрди рдмрд╣реБ-рд╕реЗрд╡рд╛рдПрдВ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдбрд┐рдмрдЧрд░ рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рди рддреЛ рдПрдХ рд╣реА рд╕реЗрд╡рд╛ рдХрд╛ рдмрд╣реБ-рдЙрджрд╛рд╣рд░рдг рд╣реИ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА)ред

рдпрджрд┐ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдореЗрд░реЗ рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк docker-compose up -d рд╕реЗ рд╕рднреА рдбрд┐рдмрдЧ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рдбрд┐рдмрдЧрд░ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рд╡реАрдПрд╕ рдкрд░ рдбрд┐рдмрдЧ рдЕрдиреБрднрд╛рдЧ рд╕реЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдЕрдм рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ MSFT рдХреЛ рд╣рдореЗрдВ рдбрд┐рдмрдЧрд░ рдХреЛ рдХрдИ рд╕реЗрд╡рд╛рдУрдВ рдФрд░ рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред рдореИрдВрдиреЗ рдЬреЛ рдХрд┐рдпрд╛ рд╡рд╣ рдбреАрдмрдЧрд░ рд╕реАрдорд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдХ рдерд╛ред

@galvesribeiro
рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рджреЗрд░ рд╕реЗ рдЖрдкрдХреЗ рд░рд╛рд╕реНрддреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛......
рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рд╡реАрдПрд╕ 2017 рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдореИрдВ рдореИрдХ рдореЗрдВ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреЙрдХрд░ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореИрдХ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡реАрдПрд╕ 2017 рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред

рдореИрдХ рдХреЗ рд▓рд┐рдП рд╡реАрдПрд╕2017 рдФрд░ рд╡реАрдПрд╕ рджреЛрдиреЛрдВ рдореЗрдВ рд╡реАрдПрд╕рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдбреЙрдХрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЕрдиреБрднрд╡ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдПрдХ рд╣реА рд╕реАрдорд╛ рд╣реИ ...

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ рдпрд╣рд╛рдВ рд╕рд╛рдЭрд╛ рдХреА рдЧрдИ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП @galvesribeiro рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджрд┐рдпрд╛ред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорджрджрдЧрд╛рд░ рдерд╛ред

рдЬреЛ рд▓реЛрдЧ vscode рд╕реЗ aspnetcore 2.0 рдХреЛ рдбрд┐рдмрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдореБрдЭреЗ Dockerfile + launch.json рдореЗрдВ рдХреБрдЫ рдиреНрдпреВрдирддрдо рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдереЗ:

  1. FROM рдХреЛ Microsoft/aspnetcore- рдмрд┐рд▓реНрдб рдореЗрдВ рдмрджрд▓реЗрдВ
  2. clrdbg рдХреЗ рдмрдЬрд╛рдп vsdbg рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд╡реАрдирддрдо C# рдПрдХреНрд╕рдЯреЗрдВрд╢рди crl рдЕрдм рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдХреГрдкрдпрд╛ рдЗрд╕ Dockerfile.debug рдХреЛ рджреЗрдЦреЗрдВ
  3. рд▓реЙрдиреНрдЪ.рдЬреЗрд╕рди рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдмрд┐рдВрджреБ # 2 рдФрд░ рдЗрд╕рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реАрд▓рд╛рдВрдЪ рдЯрд╛рд╕реНрдХ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ:

рдорд╣рддреНрд╡рдкреВрд░реНрдг: <> рдХреЗ рдмреАрдЪ рдХреА рд╣рд░ рдЪреАрдЬрд╝ рдХреЛ рдЖрдкрдХреЗ рдРрдк рдХреЗ рдбреЗрдЯрд╛ рд╕реЗ рднрд░рдирд╛ рд╣реЛрдЧрд╛

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "<Just_Another_Name_For_Your_Launch_Conf>",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "publish",
            "cwd": "/app",
            "program": "/app/<Your_AppName_Here>.dll",
            "sourceFileMap": {
                "/app": "${workspaceRoot}/<your_project_folder_here>"
            },
            "pipeTransport": {
                "pipeProgram": "docker",
                "pipeCwd": "${workspaceRoot}",
                "pipeArgs": [
                    "exec -i <your_containername_here>"
                ],
                "quoteArgs": false,
                "debuggerPath": "/vsdbg/vsdbg"
            }
        }
    ]
}

рд╣реИрдкреНрдкреА рдбрд┐рдмрдЧрд┐рдВрдЧ!

@galvesribeiro - рдмрдврд╝рд┐рдпрд╛ рдХрд╛рдо, рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдВрдпреЛрдЧ рд╕реЗ рдЖрдкрдХреА рдХрд┐рд╕реА рд╕реЗрд╡рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ Dockerfile рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ - рдЕрд░реНрдерд╛рддред рднрдВрдбрд╛рд░-рдПрдкреАрдЖрдИ

рдзрдиреНрдпрд╡рд╛рдж
рдирд┐рд╢рд╛рди

@mmacneil рдзрдиреНрдпрд╡рд╛рджред рдбреАрдмрдЧ рдЫрд╡рд┐ рд╡рд╣ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИред рд░рдирдЯрд╛рдЗрдо рдЫрд╡рд┐ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рдЦрд╛рд▓реА рдЫрд╡рд┐ рд╣реИ рдЬреЛ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ/рдбреЙрдЯрдиреЗрдЯ рд░рдирдЯрд╛рдЗрдо-рдУрдирд▓реА рдЗрдореЗрдЬ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИ рдФрд░ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ dotnet myProject.dll рдмрд┐рдирд╛ рдХрд┐рд╕реА рдлреИрдВрд╕реА рд╕рд╛рдорд╛рди рдХреЗ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж @galvesribeiro , рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЖрдк рдХрд┐рд╕реА рддрд░рд╣ Dockerfile.debug рдФрд░ рд░рдирдЯрд╛рдЗрдо рдЗрдореЗрдЬ рдХреЛ рдорд░реНрдЬ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдХрд╣реАрдВ рдФрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдбрд┐рдмрдЧ рдФрд░ рд░рдирдЯрд╛рдЗрдо рдХреЗ рд▓рд┐рдП 2 рдЕрд▓рдЧ рдХрдВрдЯреЗрдирд░ рджреЗрдЦрддрд╛ рд╣реВрдВред

(рдПрдХрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ) ASP.NET .NET рдХреЛрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ (рдПрдХ рд▓рд╛ рд╡реАрдПрд╕) рдХреЗ рд▓рд┐рдП 500 рдЕрддрд┐рд░рд┐рдХреНрдд рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╕рдорд░реНрдердиред рдореБрдЭреЗ рдпрд╣ рдЬрд╛рдирдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЛ рдЖрдкрдХреА рдЗрдЪреНрдЫрд┐рдд рдЪреАрдЬрд╝реЛрдВ рдХреЗ рдХрд░реАрдм рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдФрд░ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдПред

@philliphoff рдЗрд╕реЗ

@galvesribeiro рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд╢рд╛рдпрдж рдореИрдВ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рдирд┐рдХрд▓ рдЧрдпрд╛ред рдкреАрдЖрд░ рдХреЛ master рдореЗрдВ рдорд┐рд▓рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЕрднреА рддрдХ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЖрд╣ рдорд╕реНрддред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдЗрдирд╕рд╛рдЗрдбрд░реНрд╕ рдмрд┐рд▓реНрдб рдкрд░ рдЬрд▓реНрдж рд╣реА рдЖ рдЬрд╛рдПрдЧрд╛ред рдореЗрд░реЗ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдВрдЧреЗред рдзрдиреНрдпрд╡рд╛рдж!

рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрд▓реБрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ https://aka.ms/o0ukef


рд╕реЗ: рдлрд┐рд▓рд┐рдк рд╣реЙрдл рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рднреЗрдЬрд╛ рдЧрдпрд╛: рд╢реБрдХреНрд░рд╡рд╛рд░, рдЕрдХреНрдЯреВрдмрд░ 19, 2018 6:07:29 рдЕрдкрд░рд╛рд╣реНрди
рдкреНрд░рддрд┐: Microsoft/vscode-docker
рд╕реАрд╕реА: рдЧреБрдЯреЗрдордмрд░реНрдЧ рд░рд┐рдмреЗрд░реЛ; рдЙрд▓реНрд▓реЗрдЦ
рд╡рд┐рд╖рдп: рдкреБрди: [Microsoft/vscode-docker] рдбрд┐рдмрдЧ рдХрдВрдЯреЗрдирд░ (#56)

@galvesribeiro https://github.com/galvesribeiro рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд╢рд╛рдпрдж рдореИрдВ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рдирд┐рдХрд▓ рдЧрдпрд╛ред рдкреАрдЖрд░ рдХреЛ рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рдорд┐рд▓рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЕрднреА рддрдХ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub https://github.com/Microsoft/vscode-docker/issues/56#issuecomment-431499291 рдкрд░ https://github.com/notifications/unsubscribe-auth/ AEfuOIZ_mCzxwQXaP4-G0-CxwNrEhzD0ks5umj8RgaJpZM4LwWjB ред

@galvesribeiro , рд╣рдо PR #500 рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕ рдмрдЧ рдХреЛ рдмрдВрдж рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдЖрддреА рд╣реИ рддреЛ рдПрдХ рдирдпрд╛ рдмрдЧ рджрд░реНрдЬ рдХрд░реЗрдВред :-)

рдХреВрд▓ @PrashanthCorp рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛, рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХрд╛ рд╕рдордп рдирд╣реАрдВ рдерд╛ред рдХреНрдпрд╛ рдЗрд╕реЗ VSCode рдХреЗ рд░рд┐рд▓реАрдЬрд╝ рдмрд┐рд▓реНрдб рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд░рд╛рд╕реНрддрд╛ рдорд┐рд▓ рдЧрдпрд╛? рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдЙрдЪрд┐рдд рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдбреЙрдХреНрдЯрд░/рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рд╣реИ рдФрд░ рд╣рдореЗрдВ рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП?

рдзрдиреНрдпрд╡рд╛рдж!

@galvesribeiro https://github.com/Microsoft/vscode-docker#debugging -net -core-preview рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ, рдзрдиреНрдпрд╡рд╛рдж!

рд╕реАрд╕реА @ рдлрд┐рд▓рд╣реЙрдл

рдзрдиреНрдпрд╡рд╛рдж @StephenWeatherford

рдмрд╕ рдЗрд╕реЗ рджреЗрдЦрд╛ ... рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЕрднреА рднреА рд╕рд┐рдВрдЧрд▓-рдХрдВрдЯреЗрдирд░ рдбреАрдмрдЧ рдореЗрдВ рд╕рдВрдШрд░реНрд╖ рдХрд░рддрд╛ рд╣реИ :( рдХреЛрдИ рд▓рд┐рдЦреЗрдВ рдпрд╛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ ...

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

SQLvariant picture SQLvariant  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bpasero picture bpasero  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dschuessler picture dschuessler  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

revmischa picture revmischa  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bradygmsft picture bradygmsft  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ