Я пытаюсь создать образ RabbitMQ, который устанавливает плагин rabbitmq_auth_backend_http
, а также выполняет приложение java (.jar
) через файл сценария bash
. Однако, когда я запускаю контейнер, я получаю следующие выходные данные из RabbitMQ:
/usr/local/bin/docker-deploy.sh: 2: /usr/local/bin/docker-deploy.sh:
: not found
Starting rabbit-sidecar application
Enabling plugins on node rabbit@039e6bd1bbfd:
bbitmq_auth_backend_http
The following plugins have been configured:
rabbitmq_auth_backend_http
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@039e6bd1bbfd...
The following plugins have been enabled:
rabbitmq_auth_backend_http
set 4 plugins.
Offline change; changes will take effect at broker restart.
/usr/local/bin/docker-deploy.sh: 4: /usr/local/bin/docker-deploy.sh: rabbitmq-server
: not found
Он также не находит rabbitmq-server
, который необходим для перезапуска кролика, чтобы плагин заработал.
Примечание * * * * * * * * * * * * Приложение java, кажется, работает должным образом и просто регистрирует то, что оно обычно регистрирует, когда оно запускается как его собственный контейнер.
Dockerfile
FROM rabbitmq:3.8.2-management
COPY ./rabbitmq.conf /etc/rabbitmq/rabbitmq.conf
RUN apt -y update && apt -y install openjdk-8-jdk
RUN mkdir /sidecar
ADD ./target/demo-0.0.1-SNAPSHOT.jar /sidecar/demo-0.0.1-SNAPSHOT.jar
ADD ./docker-deploy.sh /usr/local/bin/docker-deploy.sh
RUN chmod 755 /usr/local/bin/docker-deploy.sh #755
ENTRYPOINT ["sh", "/usr/local/bin/docker-deploy.sh"]
Script
#!/bin/bash
echo "Starting rabbit-sidecar application"
rabbitmq-plugins enable rabbitmq_auth_backend_http; rabbitmq-server
# starts the sidecar
java -jar /sidecar/demo-0.0.1-SNAPSHOT.jar
Мой оригинальный пользовательский образ, который работал, был таким:
FROM rabbitmq:3.8.2-management
COPY rabbitmq.conf /etc/rabbitmq/rabbitmq.conf
CMD ["sh", "-c", "rabbitmq-plugins enable rabbitmq_auth_backend_http; rabbitmq-server"]
, который работал нормально, но, очевидно, мне нужно было делать то, что я делаю, потому что я хочу иметь возможность запускать другой сервис внутри тот же контейнер, что и требуется.
Я заметил, что в /usr/local/bin
есть docker-entrypoint.sh
. Это то, что следует рассматривать в этом контексте?