Создайте пользовательскую среду разработки Docker

#docker #visual-studio-code #dockerfile

Вопрос:

Мне нравится инструмент среды разработки Docker, но я хотел бы также иметь возможность предварительно устанавливать некоторые инструменты, когда пользователь клонирует репозиторий с помощью инструмента среды разработки Docker.

У меня есть .devcontainer папка в репозитории с Dockerfile :

 # [Choice] Alpine version: 3.13, 3.12, 3.11, 3.10
ARG VARIANT="3.13"
FROM mcr.microsoft.com/vscode/devcontainers/base:0-alpine-${VARIANT}

# Install Terraform CLI

# Install GCloud SDK

 

И devcontainer.json файл:

 {
    "name": "Alpine",
    "build": {
        "dockerfile": "Dockerfile",
        // Update 'VARIANT' to pick an Alpine version: 3.10, 3.11, 3.12, 3.13
        "args": { "VARIANT": "3.13" }
    },
    
    // Set *default* container specific settings.json values on container create. 
    "settings": {},

    // Add the IDs of extensions you want installed when the container is created.
    // Note that some extensions may not work in Alpine Linux. See https://aka.ms/vscode-remote/linux.
    "extensions": [],

    // Use 'forwardPorts' to make a list of ports inside the container available locally.
    // "forwardPorts": [],

    // Use 'postCreateCommand' to run commands after the container is created.
    // "postCreateCommand": "uname -a",

    // Uncomment when using a ptrace-based debugger like C  , Go, and Rust
    // "runArgs": [ "--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined" ],

    // Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
    "remoteUser": "vscode"
}
 

Я пытался включить curl и установить команды в Dockerfile , но команды, похоже, просто не работают. Чтобы уточнить, как только контейнер построен, я, похоже, не могу получить доступ к инструментам CLI, например, terraform --version говорит, что терраформа не найдена.

Докер запускается как окно VSCode, запущенное в контейнере, и я пытаюсь использовать инструменты командной строки из терминала VSCode, если это имеет значение.

Ответ №1:

ПРАВКА: Таким образом, проблема в том, что создание среды с панели управления Docker не считывается в вашей .devcontainer папке и файлах, а просто создает стандартный базовый контейнер. Вам нужно клонировать репозиторий, открыть в VSCode, а затем Reopen in Container и он создаст вашу среду.

Я переключился на Ubuntu в качестве базового образа вместо Alpine, а затем вместо создания среды разработки с панели управления Docker я вместо этого открыл папку проекта локально в VSCode и выбрал «Открыть заново в контейнере». Тогда казалось, что он установил все, и теперь у меня есть инструменты CLI, доступные сейчас.

Приведенные ниже команды установки взяты из официальной документации каждого поставщика. Я собираюсь повторно протестировать доступ к репозиторию через панель управления Docker, чтобы проверить, работает ли он.

 # [Choice] Ubuntu version: bionic, focal
ARG VARIANT="focal"
FROM mcr.microsoft.com/vscode/devcontainers/base:0-${VARIANT}

# Installs Terragrunt   Terraform
ARG TERRAGRUNT_PATH=/bin/terragrunt
ARG TERRAGRUNT_VERSION=0.31.1
RUN wget https://github.com/gruntwork-io/terragrunt/releases/download/v${TERRAGRUNT_VERSION}/terragrunt_linux_amd64 -O ${TERRAGRUNT_PATH} 
  amp;amp; chmod 755 ${TERRAGRUNT_PATH}

# Installs GCloud SDK
RUN echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] http://packages.cloud.google.com/apt cloud-sdk main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list amp;amp; curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key --keyring /usr/share/keyrings/cloud.google.gpg  add - amp;amp; apt-get update -y amp;amp; apt-get install google-cloud-sdk -y