Какие знаешь способы отправить код в Docker контейнер

«Какие знаешь способы отправить код в Docker контейнер» — вопрос из категории DevOps, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Есть несколько основных способов:

  1. Копирование через Dockerfile
    Используем COPY или ADD в Dockerfile:
    FROM golang:alpine
    COPY . /app
    WORKDIR /app
    RUN go build -o main .
  1. Монтирование volume
    При запуске контейнера:
    docker run -v $(pwd):/app my-image
  1. Через docker-compose
    В docker-compose.yml:
    services:
      app:
        volumes:
          - ./:/app
  1. Через STDIN (редко используется)
    docker run -i alpine sh -c 'cat > /script.sh' < script.sh
  1. Из git-репозитория
    В Dockerfile:
    RUN git clone https://github.com/user/repo.git

Для прода лучше использовать multi-stage сборку в Dockerfile, чтобы не копировать исходники в финальный образ.