Сборка образа Docker с OpenTofu
Ранее OpenTofu предоставлял официальные образы Docker, которые можно было использовать напрямую. Начиная с OpenTofu 1.10, прямая работа с официальными образами больше не поддерживается. Теперь на этой странице описано, как создать собственный образ Docker с OpenTofu.
Если вы ранее использовали docker run ghcr.io/opentofu/opentofu, вам потребуется создать собственный образ, следуя приведенным ниже инструкциям.
Создание собственного образа
Если вам нужен OpenTofu в контейнере Docker, потребуется создать собственный образ. Это можно сделать двумя способами:
- Использовать многоэтапную сборку, чтобы скопировать двоичный файл
tofuиз минимального образа OpenTofu в свой образ. - Использовать автономный сценарий установки, чтобы установить
tofuв образ контейнера.
Способ 1: использование многоэтапной сборки
Минимальные образы OpenTofu содержат только двоичный файл tofu по пути /usr/local/bin/tofu. Эти образы можно использовать в многоэтапной сборке, чтобы скопировать двоичный файл в собственный образ.
Доступные теги минимальных образов:
-
ghcr.io/opentofu/opentofu:minimal— последняя версия -
ghcr.io/opentofu/opentofu:1-minimal— последняя версия 1.x -
ghcr.io/opentofu/opentofu:1.9-minimal— последняя версия 1.9.x -
ghcr.io/opentofu/opentofu:1.9.1-minimal— конкретная версия
Пример Dockerfile с использованием Alpine Linux:
FROM ghcr.io/opentofu/opentofu:minimal AS tofu FROM alpine:3.20 # Copy the tofu binary from the minimal image COPY --from=tofu /usr/local/bin/tofu /usr/local/bin/tofu # Add any other tools or dependencies you need RUN apk add --no-cache git curl # Your application setup WORKDIR /workspace
Пример с использованием Ubuntu:
FROM ghcr.io/opentofu/opentofu:minimal AS tofu
FROM ubuntu:24.04
# Copy the tofu binary
COPY --from=tofu /usr/local/bin/tofu /usr/local/bin/tofu
# Install dependencies
RUN apt-get update && apt-get install -y \
git \
curl \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /workspaceСпособ 2: использование сценария установки
Также можно использовать сценарий установки OpenTofu, чтобы установить двоичный файл непосредственно в образ контейнера.
Шаг 1: загрузка сценария установки
Сначала загрузите сценарий установки, следуя инструкциям по автономной установке, и поместите его рядом с Dockerfile.
Шаг 2: установка OpenTofu в образ
Пример Dockerfile с использованием сценария установки:
FROM alpine:3.20
# Copy the installation script
COPY install-opentofu.sh /tmp/install-opentofu.sh
# Install dependencies needed for the script
RUN apk add --no-cache bash curl gpg gpg-agent
# Run the installation script
RUN chmod +x /tmp/install-opentofu.sh && \
/tmp/install-opentofu.sh --install-method standalone --install-path /usr/local/bin && \
rm /tmp/install-opentofu.sh
# Add your other dependencies
RUN apk add --no-cache git
WORKDIR /workspaceДля образов на основе Ubuntu:
FROM ubuntu:24.04
# Copy the installation script
COPY install-opentofu.sh /tmp/install-opentofu.sh
# Install dependencies
RUN apt-get update && apt-get install -y \
curl \
gpg \
&& rm -rf /var/lib/apt/lists/*
# Run the installation script
RUN chmod +x /tmp/install-opentofu.sh && \
/tmp/install-opentofu.sh --install-method standalone --install-path /usr/local/bin && \
rm /tmp/install-opentofu.sh
# Add your other dependencies
RUN apt-get update && apt-get install -y \
git \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /workspaceПроверка образа
После сборки образа убедитесь, что OpenTofu установлен правильно:
docker build -t my-opentofu-image . docker run --rm my-opentofu-image tofu --version
Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.10/intro/install/docker/