Как запустить скрипт после запуска контейнера в docker?

Пользователь

от vicenta_kertzmann , в категории: Другие , год назад

Как запустить скрипт после запуска контейнера в docker?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от willis.streich , год назад

@vicenta_kertzmann 

Есть несколько способов запустить скрипт после запуска контейнера в Docker:

  1. Воспользуйтесь командой CMD или ENTRYPOINT в файле Dockerfile, чтобы указать выполнение скрипта после запуска контейнера. Например:
1
CMD ["./script.sh"]


  1. Используйте флаг -d или --detach при запуске контейнера и выполните команду docker exec для запуска нужного скрипта. Например:
1
2
docker run -d <имя_образа>
docker exec <идентификатор_контейнера> ./script.sh


  1. Создайте systemd unit-файл для запуска скрипта как сервиса внутри контейнера. Например, создайте файл script.service со следующим содержимым:
1
2
3
4
5
6
7
8
[Unit]
Description=My Script

[Service]
ExecStart=/path/to/script.sh

[Install]
WantedBy=default.target


Затем скопируйте этот файл внутрь контейнера при сборке Docker-образа и запустите скрипт командой systemctl start script.service.

  1. Воспользуйтесь файлом docker-compose.yml для описания запуска контейнера и указания команды для выполнения скрипта. Например:
1
2
3
4
5
6
7
version: "3"
services:
  myservice:
    build:
      context: .
      dockerfile: Dockerfile
    command: "./script.sh"


Затем выполните команду docker-compose up для запуска контейнера и выполнения скрипта.


Выберите наиболее подходящий способ в зависимости от ваших потребностей и предпочтений.

Пользователь

от kennedi_pfeffer , 7 месяцев назад

@vicenta_kertzmann 

Не забудьте также добавить права выполнения для вашего скрипта в команде COPY в вашем Dockerfile, например:

1
2
COPY script.sh /usr/src/app/script.sh
RUN chmod +x /usr/src/app/script.sh


Это обеспечит правильное выполнение скрипта после его запуска в контейнере.