Как установить новое программное обеспечение на виртуальную машину гибкой среды GCP

У меня есть приложение ruby ​​on rails, работающее на виртуальной машине Google Cloud Platform, работающей в гибкой среде механизма приложений. Похоже, что он устанавливает большую часть программного обеспечения на виртуальную машину, когда я развертываю приложение с помощью gcloud --project project-name preview app deploy. Я думаю, что он устанавливает рельсы и другое программное обеспечение, читая созданный им временный файл докеров. Он берет информацию для файла dockerfile из файла app.yaml (я получил эту настройку, следуя их руководствам).

У меня это работало нормально, но теперь мне нужно установить ImageMagick на сервер, чтобы манипулировать изображениями на сайте. Обычно вы делаете это, запуская sudo apt-get install imagemagick из каталога проекта. Когда я подключаюсь к виртуальной машине по SSH, я не могу найти каталог проекта, так что это не работает.

Я понятия не имею, как заставить его запускаться sudo apt-get install imagemagick каждый раз, когда я делаю новое развертывание на сайте, чтобы оно имело программное обеспечение на новой виртуальной машине.

Как вы могли бы сказать, я не очень хорошо разбираюсь в серверной части и хочу знать, что я должен делать, чтобы правильно установить новое программное обеспечение на виртуальную машину, чтобы оно всегда было там, как ruby, rails и т. д. . каждый раз, когда я делаю новое развертывание.


comment
Вместо стандартного вам нужно создать собственный Dockerfile с помощью этой команды sudo apt-get install imagemagick   -  person Igor Artamonov    schedule 21.08.2016
comment
@ИгорьАртамонов Хорошо. Таким образом, будет 2 файла докеров, один по умолчанию, созданный при развертывании, и тот, который я создаю, поэтому я запускаю sudo apt-get install imagemagick? Я не могу найти ничего о том, как это сделать, поэтому он знает, что есть пользовательский файл докеров. Можете ли вы дать ссылку на какую-нибудь документацию о том, как этот пользовательский файл докеров следует настраивать, или, может быть, учебник?   -  person Rob    schedule 21.08.2016
comment
@Rob Я думаю, вам нужно подумать о создании custom среды выполнения (т. е. вместо ruby в вашей app.yaml), основанной на одной из предустановленных, здесь   -  person tx802    schedule 21.08.2016
comment
@IgorArtamonov выглядит так, как будто я могу использовать файл докеров по умолчанию, созданный при развертывании, и просто добавить к нему командную строку. Я дам вам знать, если это сработает, и вы можете добавить его в качестве ответа.   -  person Rob    schedule 21.08.2016
comment
да, точно, скопируйте стандартный и добавьте эту строку   -  person Igor Artamonov    schedule 21.08.2016
comment
@IgorArtamonov Я добавил строку CMD apt-get install imagemagick (пробовал с sudo и без него), но не похоже, что она установлена. Это не дает результата того, что он сделал Step 8 : CMD sudo apt-get install imagemagick ---> Running in eb815726a4a5. Если я использую приложение, я получаю Error: ImageMagick/GraphicsMagick is not installed какие-либо идеи о том, как проверить, установлено ли оно, или как показать результат установки, чтобы я знал, действительно ли оно не установлено, или возникла какая-то другая проблема, вызывающая ошибку?   -  person Rob    schedule 21.08.2016
comment
@Rob нет, не CMD, это последняя команда для запуска контейнерного приложения. Вам нужно использовать RUN, см. документы docs.docker.com/engine/reference/ строитель/#/выполнить   -  person Igor Artamonov    schedule 21.08.2016
comment
К сожалению, я не разработчик Ruby, поэтому не могу предоставить полный пример Dockerfile для Ruby. Но надеюсь разберетесь, предлагаю прочитать туториал по Докеру   -  person Igor Artamonov    schedule 21.08.2016
comment
@IgorArtamonov После некоторых возни я понял. Я добавил RUN apt-get update и RUN apt-get install imagemagick -y в пользовательский файл докеров. Без вашей помощи не справился бы. Если вы хотите добавить, добавьте ответ с упоминанием пользовательского файла докеров и добавьте в них строки, я дам вам ответ.   -  person Rob    schedule 22.08.2016


Ответы (1)


Вы должны использовать собственный Dockerfile, когда вам нужна дополнительная конфигурация.

Чтобы установить ImageMagics, вы должны установить runtime: custom в свой app.yaml, создать Dockerfile на основе значения по умолчанию и добавить следующую строку:

RUN apt-get update && \
    apt-get install imagemagick -y
person Igor Artamonov    schedule 23.08.2016
comment
Пожалуйста, удалите and, так как это приводит к сбою сборки. Было бы неплохо, если бы вы упомянули, что можете сгенерировать Dockerfile по умолчанию с помощью gcloud beta app gen-config --custom - person diogovk; 17.02.2017
comment
Боюсь, gcloud beta app gen-config --custom устарел. Может все еще работать, но к вашему сведению. - person Graham P Heath; 28.02.2020