Как написать dockerfile, чтобы правильно вытащить код из моего github - PullRequest
0 голосов
/ 03 сентября 2018

Я работаю над созданием веб-сайта на Go, который размещается на моем домашнем сервере через докер.

Что я пытаюсь сделать: Я делаю изменения на своем веб-сайте / сервере локально, а затем отправляю их на github. Я хотел бы написать dockerfile таким образом, чтобы он извлекал эти данные из моего github, создавал образ, который мой файл docker-compose затем будет использовать для создания контейнера.

К сожалению, все мои попытки были несколько близки, но ошибочны.

FROM golang:1.8-onbuild
MAINTAINER <my info>
RUN go get <my github url>
ENV webserver_path /website/
ENV PATH $PATH: webserver_path
COPY website/ .
RUN go build .
ENTRYPOINT ./website
EXPOSE <ports>

Этот файл является своего рода комбинацией нескольких небольших руководств, которые я нашел в результатах поиска в Google, но ни одно из них не дало мне необходимую информацию, и она так и не сработала.

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

ДОПОЛНИТЕЛЬНО, НО ВЕРОЯТНО НЕОБХОДИМАЯ ИНФОРМАЦИЯ НИЖЕ

Макет проекта:

enter image description here

Данные : где мои файлы go находятся Sidenote: Это выдавало мне ошибки при попытке создать образ, что-то о том, что я не в пути к среде. Не уверен, что это полезно

Статический : CSS, JS, Изображения

TPL : перейти к файлам шаблонов

Main.go : запускает сервер / сайт

Ответы [ 3 ]

0 голосов
/ 03 сентября 2018

Существует несколько стратегий:

  • Использование готового приложения . Создайте свое приложение, используя Команда go build в соответствии с целевой архитектурой системы и ОС (например, с использованием системных переменных GOOS и GOARCH), затем с помощью команды COPY docker переместите этот построенный файл (с активами и шаблонами) в ваш WORKDIR и, наконец, запустите его через CMD или ENTRYPOINT (последний является предпочтительным). Dockerfile для этого примера будет выглядеть так:

С нуля

ENV PORT 8000 EXPOSE $ PORT

COPY Advent / CMD ["/ advent"]

  • Сборка по dockerfile . Типичный Dockerfile:
# Start from a Debian image with the latest version of Go installed
# and a workspace (GOPATH) configured at /go.
FROM golang

# Copy the local package files to the container's workspace.
ADD . /go/src/github.com/golang/example/outyet

# Build the outyet command inside the container.
# (You may fetch or manage dependencies here,
# either manually or with a tool like "godep".)
RUN go install github.com/golang/example/outyet

# Run the outyet command by default when the container starts.
ENTRYPOINT /go/bin/outyet

# Document that the service listens on port 8080.
EXPOSE 8080
  • Использование GitHub . Создайте свое приложение и перетащите его в dockerhub как готовый образ.
0 голосов
/ 04 сентября 2018

Я смог решить свою проблему, просто создав автоматическую сборку через докер-хаб и просто применив это для моего dockerfile:

FROM golang-onbuild
EXPOSE <ports>

Это не совсем правильный ответ на мой вопрос, но это эффективный обходной путь. Автоматизированная сборка соединяется с моим репозиторием github так, как я надеялся, что мой dockerfile будет.

0 голосов
/ 03 сентября 2018

Github поддерживает Webhooks , которые можно использовать для автоматического выполнения любых действий при переходе на git-репо. Поскольку вы уже используете веб-сервер на своем домашнем компьютере, почему бы вам не заставить Github отправить ему запрос POST, когда он получит фиксацию на master, и ваш домашний компьютер повторно загрузит git repo и перезапустит веб? услуги от этого?

...