Служба Cron не запускается с док-контейнером - PullRequest
0 голосов
/ 06 марта 2019

Я пытался запустить задание cron в моем док-контейнере, и я не могу запустить службу cron при запуске контейнера. Я могу удаленно войти в работающий контейнер и запустить «cron», чтобы служба запускалась без проблем. Я включил это в свой DockerFile, почему команда не выполняется?

Я могу заставить его работать, выполнив следующее (как описано выше):

docker-compose build
docker-compose up -d
docker exec -it my_container /bin/bash
root@2348723ae34: /etc/init.d/cron status <--check cron service status
[FAIL] cron is not running ... failed!  <--- cron not running
root@2348723ae34: cron
[ ok ] cron is running. <-- simply running cron starts the service

файл crontab

*/2 * * * * rm -rf /usr/src/app/assets/aligned_output/* && rm -rf /usr/src/app/assets/aligned_input/*

DockerFile

FROM node:latest

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY . /usr/src/app

RUN apt-get update && apt-get -y install cron

# Add crontab file in the cron directory
ADD crontab /etc/cron.d/hello-cron

# Give execution rights on the cron job
RUN chmod 0644 /etc/cron.d/hello-cron

# Apply cron job
RUN crontab /etc/cron.d/hello-cron

# Create the log file to be able to run tail
RUN touch /var/log/cron.log

# Run the command on container startup
CMD cron && tail -f /var/log/cron.log

RUN touch /etc/crontab /etc/cron.*/*

EXPOSE 80
RUN npm install
CMD ["npm", "start"]

докер-compose.yml

inventory:
   build: .
   restart: always
   command: npm start
   ports:
   - "80:80"
   environment:
      - NODE_ENV=production

1 Ответ

0 голосов
/ 07 марта 2019

По умолчанию docker запускается в процессе CMD. Один из способов - добавить один entrypoint скрипт, который будет запускать cron в фоновом режиме, а затем вызвать приложение CMD node. Но я предпочитаю запускать два контейнера, один для CRON и другой для приложения, которое поможет разделить проблемы для контейнеров. Один контейнер будет запускаться cron как CMD, а другой запускать приложение узла.

В случае, если вы хотите поделиться файловой системой, которая возможна с использованием томов.

...