Проверьте ошибки синтаксиса в файле Dockerfile [duplicate]

Angular1

Для людей, которые используют 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 определите здесь.

9
задан eloone 28 January 2015 в 00:36
поделиться

5 ответов

Я не очень хорошо знаком с go, но похоже, что вы можете просто вызвать метод Parse , как это сделано в тестовом наборе здесь . Если это не возвращает ошибку, ваш линт пройдет. Я предполагаю, что тривиально выставлять сценарий или что-то, что нужно вызвать во время разработки.

-1
ответ дан Abdullah Jibaly 23 August 2018 в 18:52
поделиться

Я использую очень успешно в моем конвейере 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>

Также вы можете нащупать ваши изображения для пометки.

0
ответ дан ekostadinov 23 August 2018 в 18:52
поделиться

Попробуйте:

Я выполнил простой тест против простого файла 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 .

10
ответ дан Kirill Bulygin 23 August 2018 в 18:52
поделиться

Я создал dockerfile-validator как расширение для VS Code, в котором используется dockerfile-lint , упомянутый в предыдущем ответе. По умолчанию он использует правила по умолчанию для dockerfile-lint, но в пользовательских настройках VS-кода (dockerfile-validator.rulefile.path) вы можете указать путь к пользовательскому файлу правил с вашими стандартами кодирования.

0
ответ дан Miguel Marques 23 August 2018 в 18:52
поделиться

Если у вас есть подписка 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, если вы предпочитаете запускать его локально.

2
ответ дан Yves Martin 23 August 2018 в 18:52
поделиться