169 похожих чатов

У меня максимально странный вопрос. Я запускаю systemd внутри докер-контейнера

с пачкой сервисов так:
...
ENTRYPOINT ["/usr/lib/systemd/systemd"]

Дальше от юзера ожидается, что он обязательно должен поднимать контейнер с обязательным дефайном переменной:
podman run -e FOO=123

Как перед запуском systemd проверить, что переменная заефайнена и, если да — нормально запускать systemd, словно бы он pid1, а если переменная не указана — написать сообщение и убить вообще всё тут же не доходя до запуска юнитов?

9 ответов

40 просмотров

Инит скрипт

Ofee-Oficsu Автор вопроса
ninekeem 🐳
Инит скрипт

Как мне потом из него запустить systemd? Или предлагается переписать сервисы на башпортянки?

Ofee-Oficsu Автор вопроса
ninekeem 🐳
Из инит скрипта и запустить

systemd не зпускается, если он не pid1. Если бы он запускался, этого вопроса вообще не блыо бы

Ofee Oficsu
Как мне потом из него запустить systemd? Или предл...

Как-то так: #!/bin/sh if [ -z "${FOO}" ]; then exit 1 fi exec /usr/lib/systemd/systemd Но я бы возможно порекомендовал обойтись без systemd. Это не docker-way.

Внутри контейнеров можно взять более легкий supervisord а вообще у вас контейнер по сути демон под контролем рантайма. Вы себе какой-то гемор придумали на ровном месте и страдаете

Ofee-Oficsu Автор вопроса
Alexander Satirskiy
Как-то так: #!/bin/sh if [ -z "${FOO}" ]; then ...

Я, конечно же, попробовал это, но оно так не работает, systemd при запуске из враппера падает с чем-то вроде Failed to mount tmpfs at /run: Operation not permitted [!!!!!!] Failed to mount API filesystems. Exiting PID 1...

Ofee-Oficsu Автор вопроса
Solyar
Внутри контейнеров можно взять более легкий superv...

@satirsky, @solard, по поводу того, чтобы выкинуть systemd вообще — я думал, тем более, под ним в конечном итоге вообще запускается графическое приложение. Но ему для нормальной работы нужно, чтобы работало несколько сервисов в фоне, юниты к которым достаточно сложные и написаны не мной — я не уверен, что вообще смогу правильно отвязать от systemd, и не хочу перепроверять их корректность после каждого обновления базового образа

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта