Следующая ситуация:
- У меня есть приложение Spring Boot
- , который работает в рое Docker
- , но не запускается из-за неправильной настройки (отсутствует свойство).
- Мне кажется, что рой докеров всегда пытается перезапустить контейнер, но всегда терпит неудачу из-за отсутствующего свойства.
- Перезапуск не имеет смысла, потому что docker никогда не сможет запустить приложение, пока я не исправлю отсутствующее свойство.
- Так что в настоящее время рой заканчивается бесконечной петлей.
Относительно этой проблемы я уже читал:
Моя "настройка":
Докер-файл:
ARG nexus_docker_registry=mynexus.com:10099
FROM ${nexus_docker_registry}/openjdk:8-jdk-alpine
ADD myjar.jar myjar.jar
ENV JAVA_OPTS=""
ENTRYPOINT [ "java", "-jar", "/myjar.jar" ]
мой YML-файл для создания Docker сервиса:
---
- hosts: docker_manager
become: false
vars:
servicename: 'myservice'
imageurl: "mynexus.com:10099/myjar:{{version}}"
extraoptions:
- "--with-registry-auth"
- "--detach=true"
- "--log-driver gelf"
- "--log-opt 'gelf-address=udp://{{ groups['logstash'][0] }}:10001'"
- "--hostname 'myhost.com'"
- "--mount 'type=bind,source=/etc/localtime,destination=/etc/localtime:ro'"
- "--mount 'type=volume,source=mykeys,destination=/mykeys'"
- "--env 'spring.profiles.active=docker'"
- "--publish 8000:6666"
tasks:
- name: Include vault
include_vars: "myvault.yml"
- name: "delete service '{{ servicename }}'"
command: sudo docker service rm "{{ servicename }}"
args:
warn: false
ignore_errors: true
run_once: true
- name: "create service {{ servicename }}"
command: sudo docker service create {{ extraoptions | join( ' ' ) }} --name "{{ servicename }}" "{{ imageurl }}"
args:
warn: false
run_once: true
Чего я хочу достичь:
- Если приложение весенней загрузки не может запуститься из-за, например,
BeanCreationException
или чего-то подобного, то я не хочу, чтобы служба docker бесконечно перезапускалась.
- Если я перезапущу рой и т. Д., Служба Docker должна перезапуститься автоматически.
В докерской документации написано:
Если вы остановите контейнер вручную, его политика перезапуска будет игнорироваться до тех пор, пока демон Docker не перезапустится или контейнер не будет перезапущен вручную. Это еще одна попытка предотвратить перезапуск цикла.
Так что я предполагаю, что то, чего я хочу достичь, невозможно с помощью политики перезапуска.
Вопросы:
- но, может быть, я смогу написать что-нибудь в моем
Dockerfile
, чтобы достичь своих целей?
- Или я здесь совершенно не прав и неверно истолковываю документацию?
Я, к сожалению, не специалист по докеру, и все еще учусь справляться с "роем".