https://github.com/prongbang/gocron
Gocron manages cron jobs with a configuration.
https://github.com/prongbang/gocron
Last synced: 3 months ago
JSON representation
Gocron manages cron jobs with a configuration.
- Host: GitHub
- URL: https://github.com/prongbang/gocron
- Owner: prongbang
- License: mit
- Created: 2023-08-23T15:59:32.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-11-18T14:20:34.000Z (11 months ago)
- Last Synced: 2025-07-11T19:58:34.811Z (3 months ago)
- Language: Go
- Size: 53.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# gocron [](https://hub.docker.com/r/prongbang/gocron/) [](https://hub.docker.com/r/prongbang/gocron/)
[Gocron](https://hub.docker.com/r/prongbang/gocron) manages cron jobs with a configuration.
[](https://www.buymeacoffee.com/prongbang)
## Install by Source
```shell
go get github.com/prongbang/gocron
```Using
```go
package mainimport (
"github.com/prongbang/gocron/cmd/gocron/runner"
_ "time/tzdata"
)func main() {
runner.Start()
}
```## Install by Docker
## Configuration with API
- docker-compose.yml
```yaml
services:
gocron:
image: prongbang/gocron:latest
ports:
- "8000:8000"
environment:
- TZ=Asia/Bangkok
- GOCRON_API=true
```### Create
- `POST http://localhost:8000/v1/scheduler`
Request
```json
{
"cron": "*/1 * * * *",
"task": {
"type": "api",
"config": {
"url": "http://localhost/notify",
"method": "POST",
"header": {
"X-API-KEY": "ABC"
},
"body": {
"data": "Hi"
}
}
}
}
```Response
```json
{
"code": "201",
"message": "Created",
"data": {
"job": "83ba2dc9dd5c4326a07dc9eb2d5163b3"
}
}
```### Get all
- `GET http://localhost:8000/v1/scheduler`
Response
```json
{
"code": "200",
"message": "OK",
"data": [
{
"job": "83ba2dc9dd5c4326a07dc9eb2d5163b3",
"cron": "*/1 * * * *",
"task": {
"type": "api",
"config": {
"url": "http://localhost/notify",
"method": "POST",
"body": {
"data": "Hi"
},
"header": {
"X-API-KEY": "ABC"
}
}
},
"running": true
}
]
}
```### Stop
- `POST http://localhost:8000/v1/scheduler/stop`
Request
```json
{
"job": "83ba2dc9dd5c4326a07dc9eb2d5163b3"
}
```Response
```json
{
"code": "200",
"message": "OK",
"data": {
"job": "83ba2dc9dd5c4326a07dc9eb2d5163b3"
}
}
```## Configuration with BuildIn
```yml
schedulers:
- job: "every-24-hours"
cron: "0 0 * * *"
task:
url: "http://localhost/post"
method: "POST"
body: >
{"data": "every-24-hours"}
header: >
{"X-Api-Key": "XXX"}
```### Config from File
- Project structure
```shell
project
├── configuration
│ └── configuration.yml
└── docker-compose.yml
```- docker-compose.yml
```yml
services:
gocron:
image: prongbang/gocron:latest
environment:
- TZ=Asia/Bangkok
- GOCRON_API=true
- GOCRON_BUILDIN=true
- GOCRON_SOURCE=file
volumes:
- "./configuration.yml:/app/configuration/configuration.yml"
```### Config from Remote Key/Value Store Example - Encrypted
- docker-compose.yml
```yml
services:
gocron:
image: prongbang/gocron:latest
environment:
- TZ=Asia/Bangkok
- GOCRON_BUILDIN=true
- GOCRON_SOURCE=remote
- GOCRON_REMOTE_SECURE=true
- GOCRON_REMOTE_PROVIDER=http://127.0.0.1:4001
- GOCRON_REMOTE_ENDPOINT=true
- GOCRON_REMOTE_PATH=/config/hugo.yml
- GOCRON_REMOTE_SECRET_KEYRING=/etc/secrets/mykeyring.gpg
```### Config from Remote Key/Value Store Example - Unencrypted
- docker-compose.yml
```yml
services:
gocron:
image: prongbang/gocron:latest
environment:
- TZ=Asia/Bangkok
- GOCRON_BUILDIN=true
- GOCRON_SOURCE=remote
- GOCRON_REMOTE_SECURE=true
- GOCRON_REMOTE_PROVIDER=http://127.0.0.1:4001
- GOCRON_REMOTE_ENDPOINT=true
- GOCRON_REMOTE_PATH=/config/hugo.yml
```