Создайте файл при запуске контейнера в aws fargate

#amazon-web-services #docker #containers #devops #aws-fargate

#amazon-веб-сервисы #docker #контейнеры #devops #aws-fargate

Вопрос:

Это первый раз, когда я использую fargate и docker, я знаю, что fargate использует docker api для запуска, поэтому я пытаюсь запустить контейнер на основе образа, которому нужны некоторые файлы, доступные для доступа внутри контейнера при запуске, вместе с некоторыми переменными env, проблема в том, что команда и точка входа меня смущают, и что бы я ни пытался, это просто не создаст эти файлы, команда, которую я пытаюсь запустить, является :

повторите «здесь немного текста» >> /путь/к/файлу/file

Как я могу сделать это с помощью command или entrypoint в консоли fargate?

Спасибо,

Комментарии:

1. какой тип файла вы пытаетесь создать. каков сценарий

2. Мне был предоставлен образ, для запуска которого требуются некоторые сертификаты, этот образ использовался для запуска в docker, и он просто брал сертификаты с прикрепленного к нему тома, я не смог найти способ прикрепить том в fargate без запуска экземпляров x2large, поэтому я просто хотел создать их сам при запуске.

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

4. Да, но я хочу оставить это на крайний случай xD, спасибо за помощь.

Ответ №1:

Для выполнения любых операций, таких как создание обязательных файлов, вы обычно включаете их в DockerFile, который затем становится образом Docker.

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

Если какой-либо файл должен существовать в контейнере Docker, есть пара предложений, с которыми я бы согласился:

  • Создайте EFS mount и используйте его в своих контейнерах. Эти файлы будут существовать всегда для всех контейнеров, это позволит запускать контейнер без дополнительных задач.
  • Если он должен быть доступен до запуска контейнера, вы могли бы создать новый образ Docker и развернуть в ECR, содержащий ваши дополнительные изменения.
  • Если его не нужно создавать перед запуском приложения, то он может быть создан приложением при запуске.

Что касается переменных среды, то есть 2 варианта, оба официально поддерживаются в ECS, первый — это атрибут environment. Это следует использовать для конфиденциальной информации.

Второй вариант — это атрибут secrets, который загрузит секрет либо из менеджера секретов, либо из хранилища параметров SSM.

Они будут доступны для контейнеров при запуске.

Комментарии:

1. Привет, спасибо за комментарий, я попробовал решение efs, но для загрузки файлов требуются экземпляры x2large, что не имеет никакого смысла, или это не так?

2. EFS не привязан только к экземплярам более высокого класса, фактически он может работать и с лямбдами. Где вы видели это требование? 🙂

3. Возможно, я неправильно понял, но они сказали, что datasync — лучший вариант для загрузки файлов в efs, и это требование для datasync. docs.aws.amazon.com/datasync/latest/userguide /…

4. О, это больше подходит для миграции хранилища файлов, где вам нужно переместить терабайты файлов. Для создания одного нового файла вам определенно это не нужно 🙂

5. Понятно, затем я повторю попытку использования сервиса efs, спасибо за помощь, я приму ваш ответ.