Для людей, которые используют AngularJS , может справиться с этой ситуацией, используя Promises
.
Здесь it говорит,
Обещания могут использоваться для отключения асинхронных функций и позволяют объединять несколько функций вместе.
Вы можете найти приятное объяснение здесь .
Пример, найденный в docs , упомянутом ниже.
promiseB = promiseA.then( function onSuccess(result) { return result + 1; } ,function onError(err) { //Handle error } ); // promiseB will be resolved immediately after promiseA is resolved // and its value will be the result of promiseA incremented by 1.
Angular2 and Later
In
Angular2
, посмотрите на следующий пример, но его рекомендовал использоватьObservables
сAngular2
.search(term: string) { return this.http .get(`https://api.spotify.com/v1/search?q=${term}&type=artist`) .map((response) => response.json()) .toPromise();
}
Вы можете использовать это таким образом,
search() { this.searchService.search(this.searchField.value) .then((result) => { this.result = result.artists.items; }) .catch((error) => console.error(error)); }
См. здесь оригинал . Но TypScript не поддерживает native es6 Promises , если вы хотите его использовать, для этого вам может понадобиться плагин.
Кроме того, здесь представлены обещания spec определите здесь.
Я не очень хорошо знаком с go
, но похоже, что вы можете просто вызвать метод Parse , как это сделано в тестовом наборе здесь . Если это не возвращает ошибку, ваш линт пройдет. Я предполагаю, что тривиально выставлять сценарий или что-то, что нужно вызвать во время разработки.
Я использую очень успешно в моем конвейере CI npm dockerfile_lint . Вы можете добавлять или расширять правила. Используя package.json
, вы можете создавать разные конфигурации для разных заданий. Есть и
Docker CLI
docker run -it --rm --privileged -v `pwd`:/root/ \
projectatomic/dockerfile-lint \
dockerfile_lint [-f Dockerfile]
docker run -it --rm --privileged -v `pwd`:/root/ \
-v /var/run/docker.sock:/var/run/docker.sock \
projectatomic/dockerfile-lint \
dockerfile_lint image <imageid>
и Atomic CLI доступны
atomic run projectatomic/dockerfile-lint
atomic run projectatomic/dockerfile-lint image <imageid>
Также вы можете нащупать ваши изображения для пометки.
Попробуйте:
hadolinter
анализирует файл Dockerfile в AST и выполняет проверку и проверку на основе правил использования докеров в режиме наилучшей практики . Он также использует Shellcheck , чтобы вставить код Bash в команды RUN
. Я выполнил простой тест против простого файла Docker с RUN
, ADD
, ENV
и CMD
. dockerlinter
был сообразительным в том, чтобы группировать одно и то же нарушение правил вместе, но он не смог проверить настолько тщательно, как hadolinter
, возможно, из-за отсутствия Shellcheck
для статического анализа кода Bash.
dockerlinter
отстает от объема, который он может использовать, кажется, гораздо проще установить. npm install -g dockerlinter
, в то время как для компиляции hadolinter
требуется компилятор Haskell и среда сборки, которые навсегда собираются для компиляции.
$ hadolint ./api/Dockerfile
L9 SC2046 Quote this to prevent word splitting.
L11 SC2046 Quote this to prevent word splitting.
L8 DL3020 Use COPY instead of ADD for files and folders
L10 DL3020 Use COPY instead of ADD for files and folders
L13 DL3020 Use COPY instead of ADD for files and folders
L18 DL3020 Use COPY instead of ADD for files and folders
L21 DL3020 Use COPY instead of ADD for files and folders
L6 DL3008 Pin versions in apt get install. Instead of `apt-get install <package>` use `apt-get install <package>=<version>`
L6 DL3009 Delete the apt-get lists after installing something
L6 DL3015 Avoid additional packages by specifying `--no-install-recommends`
$ dockerlint ./api/Dockerfile
WARN: ADD instruction used instead of COPY on line 8, 10, 13, 18, 21
ERROR: ./api/Dockerfile failed.
Обновление в 2018 году . Поскольку теперь hadolint
имеет официальный репозиторий Docker, вы можете быстро получить исполняемый файл:
id=$(docker create hadolint/hadolint:latest)
docker cp "$id":/bin/hadolint .
docker rm "$id"
Это статически скомпилированный исполняемый файл (в соответствии с ldd hadolint
), поэтому он должен запускаться независимо от установленных библиотек , Ссылка на способ создания исполняемого файла: https://github.com/hadolint/hadolint/blob/master/docker/Dockerfile .
Я создал dockerfile-validator как расширение для VS Code, в котором используется dockerfile-lint , упомянутый в предыдущем ответе. По умолчанию он использует правила по умолчанию для dockerfile-lint, но в пользовательских настройках VS-кода (dockerfile-validator.rulefile.path) вы можете указать путь к пользовательскому файлу правил с вашими стандартами кодирования.
Если у вас есть подписка RedHat, вы можете получить доступ к приложению «Linter for Dockerfile» непосредственно в https://access.redhat.com/labs/linterfordockerfile/ ; информация о приложении находится в https://access.redhat.com/labsinfo/linterfordockerfile
Это приложение Node.js также доступно на GitHub https: / /github.com/redhataccess/dockerfile_lint, если вы предпочитаете запускать его локально.