Как выполнить две команды в команде RUN в докере?

Я создаю образ Докер на основе httpd.

Я устанавливаю в него Программное обеспечение CUPS и пытаюсь добавить в него принтер.

После установки CUPS в образ докера с помощью команды БЕГАТЬ - RUN ["apt", "install", "-y", "cups"], на следующем шаге я пытаюсь выполнить перезапустить службу чашек, а затем добавить принтер с помощью команды lpadmin.

service cups start

lpadmin -p printer_name -E -v url -m everywhere

Но это работает только тогда, когда я помещаю оба этих запуска службы и добавляю команды принтера в одну команду RUN, используя символ && между ними следующим образом:

RUN ["service cups start", "&&", "lpadmin -p printer_name -E -v url -m everywhere"]

Если я поставлю их по отдельности следующим образом:

RUN ["service cups start"]

RUN ["lpadmin -p printer_name -E -v url -m everywhere"]

это дает мне следующую ошибку:

lpadmin: Unable to connect to server: Bad file descriptor

Вот моя часть содержимого Dockerfile:

USER root

RUN ["apt", "update"]

RUN ["apt", "install", "-y", "cups"]

RUN ["systemctl", "enable", "cups"]

RUN ["service", "cups", "start", "&&", "./printerslist.sh"]

RUN ["chmod", "-R", "-f", "777", "/var/run"]

ENTRYPOINT ["service", "cups", "restart"]

Я голосую за то, чтобы закрыть этот вопрос как не по теме, потому что он не имеет ничего общего с программированием и должен быть завершен на superuser.com/questions/tagged/linux# или serverfault.com/questions/tagged/linux

tink 21.11.2018 18:57

Вы не можете запускать фоновые процессы в Dockerfiles. Как правило, такие команды, как service, вообще не работают в Docker. Если вам нужен демон печати, работающий где-то, возможно, лучшая модель - запускать его в отдельном контейнере (или еще лучше на хосте, если принтер физически подключен).

David Maze 22.11.2018 20:16

Эта проблема была решена. Но у меня появился новый выпуск. Контейнер докера застрял в ENTRYPOINT, который является service cups start. Пытаюсь развернуть контейнер в OCP. и журнал контейнера застревает на Starting Common Unix Printing System: cupsd. Есть идеи, как это решить?

Tywin Lannister 22.11.2018 20:24
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
313
0

Другие вопросы по теме