Команда запуска Google App Engine после развертывания - PullRequest
0 голосов
/ 03 августа 2020

Есть ли способ запустить список команд linux на docker после завершения развертывания sh автоматически, как жизненный цикл (значение для Kubernetes) в файле yaml?

Я не хочу иметь s sh к экземпляру и выполнить мою команду. Мне нужно установить ssh-client, а иногда vim и др.

Ответы [ 2 ]

0 голосов
/ 11 августа 2020

Для тех, кто ищет решение этой проблемы.
App Engine с runtime: python или другим исходным кодом по умолчанию в app.yaml, особых настроек не будет .
Чтобы иметь возможность создать свою собственную сборку, вы должны использовать runtime: custom и добавить Dockerfile файл в тот же каталог (root).
Это то, что это выглядит так:

app.yaml : изменение только первой строки.

    runtime: custom

    # the PROJECT-DIRECTORY is the one with settings.py and wsgi.py
    entrypoint: gunicorn -b :$PORT mysite.wsgi # specific to a GUnicorn HTTP server deployment
    env: flex # for Google Cloud Flexible App Engine

    # any environment variables you want to pass to your application.
    # accessible through os.environ['VARIABLE_NAME']
    env_variables:
    # the secret key used for the Django app (from PROJECT-DIRECTORY/settings.py)
      SECRET_KEY: 'lkfjop8Z8rXWbrtdVCwZ2fMWTDTCuETbvhaw3lhwqiepwsfghfhlrgldf'
      DEBUG: 'False' # always False for deployment
      DB_HOST: '/cloudsql/app-example:us-central1:example-postgres'
      DB_PORT: '5432' # PostgreSQL port
      DB_NAME: 'example-db'
      DB_USER: 'mysusername'   # either 'postgres' (default) or one you created on the PostgreSQL instance page
      DB_PASSWORD: 'sgvdsgbgjhrhytriuuyokkuuywrtwerwednHUQ'

      STATIC_URL: 'https://storage.googleapis.com/example/static/' # this is the url that you sync static files to
      
    automatic_scaling:
        min_num_instances: 1
        max_num_instances: 2

    handlers:
    - url: /static
      static_dir: static

    beta_settings:
      cloud_sql_instances: app-example:us-central1:example-postgres

    runtime_config:
      python_version: 3 # enter your Python version BASE ONLY here. Enter 2 for 2.7.9 or 3 for 3.6.4

Dockerfile :

    FROM gcr.io/google-appengine/python


    # Create a virtualenv for dependencies. This isolates these packages from
    # system-level packages.
    # Use -p python3 or -p python3.7 to select python version. Default is version 2.
    RUN virtualenv /env -p python3


    # Setting these environment variables are the same as running
    # source /env/bin/activate.
    ENV VIRTUAL_ENV /env
    ENV PATH /env/bin:$PATH


    # Install custom linux packages (python-qt4 for open-cv)
    RUN apt-get update -y && apt-get install vim python-qt4 ssh-client git -y


    # Add the application source code and install all dependencies into the virtualenv
    ADD . /app
    RUN pip install -r /app/requirements.txt

    # add my ssh key for github
    RUN mv /app/.ssh / && \
        chmod 600 /.ssh/*



    # Run a WSGI server to serve the application.
    EXPOSE 8080

    # gunicorn must be declared as a dependency in requirements.txt.
    WORKDIR /app
    CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 Blacks.wsgi:application --timeout 0 --preload && \
        python3 manage.py makemigrations && \
        python3 manage.py migrate
0 голосов
/ 03 августа 2020

App Engine - это бессерверное решение. В продукте описание вы можете найти:

Полностью управляемая

Полностью управляемая среда позволяет вам сосредоточиться на коде, в то время как App Engine управляет инфраструктурой.

Это означает, что, если вы выбираете App Engine, вам не нужно заботиться о сервере. Что касается дизайна, он предназначен для тех, кто не хочет иметь доступ к серверу, но сосредоточен на коде, оставляя все обслуживание сервера GCP. Я думаю, что основная функция - это автоматическое c масштабирование приложения.

Мы не знаем, что вы собираетесь делать, вы можете просмотреть ссылку app.yaml , чтобы найти все функции доступный. Конфигурация зависит от языковой среды, которую вы хотите использовать.

Если вы хотите иметь доступ к среде, вы должны использовать решения Kubernetes или даже Compute Engine.

Надеюсь, это как-то поможет !

...