#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, спасибо за помощь, я приму ваш ответ.