# #docker #ubuntu #grails #gitlab
Вопрос:
Я пытаюсь запустить команду Grails-clean на компьютере Ubuntu, работающем в контейнере Docker, но получаю следующую ошибку:
$ grails clean
| Loading Grails 2.4.0
| Configuring classpath
| Error Resolve error obtaining dependencies: Failed to read artifact descriptor for xalan:serializer:jar:2.7.1 (Use --stacktrace to see the full trace)
| Error Required Grails build dependencies were not found. This is normally due to internet connectivity issues (such as a misconfigured proxy) or missing repositories in grails-app/conf/BuildConfig.groovy. Please verify your configuration to continue.
Из-за этой проблемы я не могу продолжить развертывание файла войны с использованием grails. Я проверил «BuildConfig.groovy» и добавил некоторые репозитории, а также упомянул их на различных порталах, но безуспешно. Снова и снова повторяется одна и та же ошибка.
Любая помощь будет высоко оценена.
Спасибо, Акшат
Комментарии:
1. Вы использовали —stacktrace, чтобы увидеть полную трассировку? Вы проверили правильность настроек вашего прокси-сервера? Пожалуйста, также опубликуйте раздел «репозитории» в BuildConfig.groovy, если вы сделали это.
2. Привет, Дэниел, спасибо за твой ответ. Не могли бы вы, пожалуйста, сообщить мне, как проверить —stacktrace в контейнере docker? Кроме того, пожалуйста, подскажите, как проверить настройки прокси-сервера системы Ubuntu, работающей внутри контейнера?
3. Запустите
grails clean --stacktrace
, чтобы увидеть полный вывод. (Вы также можете использовать —многословно; я не помню, покажет ли это вам что-нибудь более полезное.) Что касается настроек прокси-сервера: можете ли вы загрузить другие зависимости?4. Привет, Дэниел, спасибо за твой ответ. Конечно, я проверю вывод stacktrace. Что касается настроек прокси-сервера, что именно вы подразумеваете под загрузкой других зависимостей? Пожалуйста, предложите!
5. Либо у вас есть зависимость, которую grails не может найти, либо ваше приложение grails не может взаимодействовать с Интернетом. Если вы можете получить некоторые зависимости, но только не эту конкретную, это проблема с этой конкретной зависимостью. Если вы ничего не можете получить, это почти наверняка проблема с сетью. Существует множество способов настройки прокси-серверов, и добавление docker в этот набор просто дает вам еще один способ выяснить, но шаг 1 заключается в определении того, является ли это вообще проблемой. Трассировка стека должна помочь.
Ответ №1:
Попробуйте использовать https вместо простого http.
mavenRepo "https://repo.grails.org/grails/core"
mavenRepo "https://repo.grails.org/grails/plugins"
Также попробуйте работать с Java 8 поверх Java 7 из-за того, что Java 8 по умолчанию использует TLS 1.2.
Комментарии:
1. Привет, Джо, я использую https только в файле BuildConfig.groovy для определения репозиториев maven. Не могли бы вы, пожалуйста, подсказать мне, что еще я могу проверить ?
2. Попробуйте получить оболочку bash в контейнере Docker и посмотрите, сможете ли вы выполнить команду curl для мест за пределами контейнера. docker exec -это <контейнер> bash
3. Спасибо за твой ответ, Джо. На самом деле я запускаю его в конвейере Gitlab, поэтому я думаю, что не буду знать идентификатор контейнера, чтобы определить его в команде docker «exec» в задании конвейера. Пожалуйста, предложите!
4. Попробуйте выполнить сборку непосредственно на сервере Gitlab pipleline и посмотрите, сработает ли это в первую очередь.
5. Можете ли вы очистить его на своей собственной машине? Удалите свой кэш maven, если вы создаете его на своей собственной машине. C:Usersyouruserid.m2