Есть ли способ установить уровень запуска на докере? - PullRequest
0 голосов
/ 21 октября 2019

Я хочу создать контейнер на основе Ubuntu и установить в нем rabbitmq

Я попробовал docker run -dit ubuntu:18.04 и вручную установить rabbitmq внутри контейнера, чтобы получить шаг списка для моего файла dockerfile. когда я создаю свой файл Docker в образ Docker, это не удается. и покажите

Not creating home directory `/var/lib/rabbitmq'.
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of start.
Processing triggers for libc-bin (2.27-3ubuntu1) ...

и

Error: unable to connect to node rabbit@2e1645badb1d: nodedown

DIAGNOSTICS
===========

attempted to contact: [rabbit@2e1645badb1d]

rabbit@2e1645badb1d:
  * connected to epmd (port 4369) on 2e1645badb1d
  * epmd reports: node 'rabbit' not running at all
                  no other nodes on 2e1645badb1d
  * suggestion: start the node

current node details:
- node name: 'rabbitmq-cli-01@2e1645badb1d'
- home dir: /var/lib/rabbitmq
- cookie hash: WYOXjiEogBIOb2jBVZzkPw==

, и это мой dockerfile

FROM ubuntu:18.04


RUN apt-get update
RUN apt-get install rabbitmq-server -y
RUN service rabbitmq-server start
RUN rabbitmq-plugins enable rabbitmq_management
RUN rabbitmqctl start_app
RUN rabbitmqctl add_user test1 test1
RUN rabbitmqctl set_user_tags test1 administrator
RUN rabbitmqctl set_permissions -p / test1 ".*" ".*" ".*"

EXPOSE 25672
EXPOSE 5672
EXPOSE 15672
EXPOSE 4369

, он должен работать нормально, потому что шаги, которые я помещаю в файл docker, являютсято же самое.

есть здесь кто-то, кто может показать мне, что делать

1 Ответ

1 голос
/ 21 октября 2019

Короче говоря: Нет. Эти команды не работают точно так же в вашем работающем контейнере, как в сборке.

Каждая ваша команда создает контейнер. Команда сборки docker (например, RUN) будет затем выполнена в этом контейнере и затем сохранена в виде образа.

ВАЖНО запущенные процессы завершаются при сохранении образа. Фоновые / демон-процессы не работают с docker - то есть по замыслу;) Это означает, что по возможности избегайте выполнения таких команд, как «запуск службы» в вашем файле docker (поскольку это не будет сохраняться до следующего слоя / команды.

Я рекомендую вам использовать официальное изображение, предоставленное rabbitMQ https://hub.docker.com/_/rabbitmq

Вы можете просмотреть соответствующий Dockerfile здесь, чтобы узнать последние новости: https://github.com/docker-library/rabbitmq/blob/b8ca2ef2814cf35de476e763db94eb9706657f3c/3.8/ubuntu/Dockerfile

Если вы все еще хотите использовать Dockerfileэто должно выглядеть примерно так (чтобы процесс продолжался)

FROM ubuntu:18.04

RUN apt-get update
RUN apt-get install rabbitmq-server -y
RUN service rabbitmq-server start && \
    rabbitmq-plugins enable rabbitmq_management && \
    rabbitmqctl start_app && \
    rabbitmqctl add_user test1 test1 && \
    rabbitmqctl set_user_tags test1 administrator && \
    rabbitmqctl set_permissions -p / test1 ".*" ".*" ".*" && \
    service rabbitmq-server stop

EXPOSE 4369 5671 5672 25672
CMD ["rabbitmq-server"]
...