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