сборка в облаке и создание docker изображений при построении docker образа - PullRequest
0 голосов
/ 17 июня 2020

В настоящее время я обнаружил, что сборка облака Google происходит во время создания образа docker (не так, как я думал, так как он построит мой образ, а затем выполнит мое изображение, чтобы выполнить все построение). Это было в этом посте

быстрый старт в сборке Google Cloud

даааааааааааааааааааач, у меня теперь очень простой файл Dockerfile, вот так

FROM gcr.io/google.com/cloudsdktool/cloud-sdk:alpine

RUN mkdir -p ./monobuild
COPY . ./monobuild/
WORKDIR "/monobuild"
RUN ["/bin/bash", "./downloadAndExtract.sh"]

и у меня есть один файл downloadAndExtract, который загружает любые артефакты (zip-файлы) из последнего созданного запуска монобилда (создаются только модифицированные серверы ИЛИ серверы, которые зависят от изменений в последней сборке CI, создаются так же, как могут быть изменены нисходящие библиотеки). Эта первая строка просто перечисляет URL-адреса zip-файлов, которые мне нужны в файле ...

curl "https://circleci.com/api/v1.1/project/butbucket/Twilio/orderly/latest/artifacts?circle-token=$token" | grep -o 'https://[^"]*zip' > artifacts.txt

while read url; do
    echo "Downloading url=$url"
    zipFile=${url/*\//}
    projectName=${zipFile/.zip/}
    echo "Zip filename=$zipFile"
    echo "projectName=$projectName"

    wget "$url?circle-token=$token"

    mv "$zipFile?circle-token=$token" $zipFile

    unzip $zipFile
    rm $zipFile
    cd $projectName

    ./deployGcloud.sh

    cd ..

done <artifacts.txt

echo "DONE"

Конечно, в сценарии deployGcloud есть эти команды, оооочень, это означает, что мы создаем docker изображений, ПОКА ВНИМАНИЕ! образ docker сборки облака google (который мне до сих пор кажется забавным) ....

docker сборка. --tag gcr.io/twix/authservice docker pu sh gcr.io/twix/authservice

gcloud run deploy staging-admin --region us-west1 --image gcr.io/twix / authservice --platform managed

ОБЕИХ docker команды, похоже, ошибаются в этом ..

 Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

в то время как команда gcloud, похоже, очень довольна выполнением развертывания, но просто используя предыдущий образ, который мы развернули в этом месте.

Итак, как обойти эту ошибку, чтобы моя сборка работала, собирала N образов и развертывала их все в облаке?

1 Ответ

0 голосов
/ 17 июня 2020

ой, наконец-то разобрался. У Google есть эта странная штука в файлах config.yaml: используйте этот docker образ для запуска команды curl, а затем на следующем шаге используйте этот ДРУГОЙ образ dockerr для запуска какой-то другой команды и так далее, используя 5 разных изображений. Все это очень сбивает с толку, поэтому вместо этого я понял, что мне нужно выяснить, как создать свой ОДИН docker образ и просто запустить его как команду, поэтому я модифицирую приведенное выше, чтобы вместо этого было ENTRYPOINT, а затем docker build и docker pu sh мое изображение в гугл. Затем у меня есть cloudbuild.yaml с одношаговой командой изображения для запуска.

Таким образом, мы можем легко настроить наши сборки в нашем docker образе, который только что запускается. Теперь это намного проще, чем сложная модель, которую установил Google, поскольку она становится базой c, делайте свою сборку в контейнере, как вам нравится, и устанавливайте все необходимые инструменты в одном образе docker.

ie. остерегайтесь быстрых запусков Google, которые, честно говоря, IMHO действительно усложняют его по сравнению с circleCI и другими системами. (конечно, это всего лишь мнение и каждый при своем).

...