Вот предложение для получения электронных писем и создания билетов с cronjob в контейнере Redmine. Я разделяю это, потому что было трудно найти документацию об этом. Возможно, есть лучшее решение, но оно работает.
docker -compose.yml
redmine:
container_name: redmine
build: configs
restart: always
ports:
- 8080:3000
environment:
- REDMINE_DB_MYSQL=mysql
- REDMINE_DB_USERNAME=redmine
- REDMINE_DB_DATABASE=redmine
- REDMINE_DB_PASSWORD=password1234
volumes:
- ./configs/crontab.txt:/root/crontab.txt
- ./configs/cronjob.sh:/root/cronjob.sh
configs / Dockerfile
FROM redmine:4.1.0
RUN set -ex; \
apt update; \
apt install cron -y
COPY entrypoint.sh /usr/local/bin/
ENTRYPOINT ["entrypoint.sh"]
CMD ["rails", "server", "-b", "0.0.0.0"]
конфиги / точка входа. sh
#!/bin/bash
echo >&2 "Start crontab"
service cron start
crontab /root/crontab.txt
# call parent entrypoint
exec /docker-entrypoint.sh "$@"
конфиги / crontab.txt
* * * * * /root/cronjob.sh >> /var/log/cron.log 2>&1
# Empty space
конфиги / cronjob. sh
#!/bin/bash
# get env form printenv in container
export PATH=/usr/local/bundle/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export GEM_HOME=/usr/local/bundle
export RAILS_ENV=production
export HOME=/home/redmine
export BUNDLE_APP_CONFIG=/usr/local/bundle
rake -f /usr/src/redmine/Rakefile redmine:email:receive_imap RAILS_ENV=production host=imap.host.com username=mail@host.com password=passw0rd port=993 ssl=true project=project_name assigned_to=group_name no_permission_check=1 unknown_user=accept move_on_success=read