Как мне установить сертификат для образа на основе nanoserver-1709 в Docker-контейнере? - PullRequest
0 голосов
/ 25 апреля 2018

Я искал это изображение для каких-либо менеджеров сертификатов, но не могу найти ничего, что помогло бы мне установить сертификат .cer. Образ наносервера 1709 не поставляется с PowerShell, поэтому для его использования мне потребуется многоэтапная сборка с образом Microsoft / WindowsServerCore, но я не совсем уверен, как мне это сделать, я могу Кажется, через Google не найти ничего, что поможет.

Если кто-нибудь знает способ установки сертификата с или без многоэтапной сборки, это будет очень ценно.

Для тех, кто заинтересован, вот мои docker-compose.yml и Dockerfile

докер-compose.yml

version: '3'

services:
  myapp:
    image: myapp
    ports:
    - "5000:80"
    build:
      context: .
      dockerfile: MyApp\Dockerfile
    container_name: "myapp"
    hostname: "myapp"
    depends_on:
      - db
  db:
    image: "microsoft/mssql-server-windows-express"
    environment:
      SA_PASSWORD: ""
      ACCEPT_EULA: "Y"
    container_name: "myapp"
    hostname: "myapp"

Dockerfile

FROM microsoft/aspnetcore:2.0-nanoserver-1709 AS base
WORKDIR /app
EXPOSE 80

FROM microsoft/aspnetcore-build:2.0-nanoserver-1709 AS build
WORKDIR /src
COPY MyApp.sln ./
COPY MyApp/MyApp.csproj MyApp/
RUN dotnet restore -nowarn:msb3202,nu1503
COPY . .
WORKDIR /src/MyApp
RUN dotnet restore
RUN dotnet ef database update
RUN dotnet build -c Release -o /app

FROM build AS publish
RUN dotnet publish -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "MyApp.dll"]

Спасибо!

1 Ответ

0 голосов
/ 10 октября 2018

На некоторых изображениях есть инструмент под названием certoc.exe, который позволяет импортировать сертификат (использование: certoc.exe -addstore root my_root_certificate.cer). Этот инструмент отсутствует на изображениях 1709, но присутствует на изображениях, таких как microsoft/nanoserver:sac2016.

Подводя итог, я нашел лучший способ справиться с этим - изменить Dockerfile на что-то вроде:

FROM microsoft/nanoserver:sac2016 as tool COPY --from=tool /Windows/System32/certoc.exe . USER ContainerAdministrator RUN certoc.exe -addstore root my_root_certificate.cer

Полный пример доступен здесь: https://pvlerick.github.io/2018/11/how-to-run-an-https-asp.net-core-app-using-test-certificates-in-nanoserver-1709-1803-with-docker

Огромное спасибо Джошуа Чини здесь: https://joshuachini.com/2018/02/08/how-to-import-an-enterprise-certificate-into-a-windows-container/

...