#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