{"id":20195848,"url":"https://github.com/ralphv/lookout","last_synced_at":"2025-07-25T23:41:50.369Z","repository":{"id":216214591,"uuid":"740768695","full_name":"ralphv/lookout","owner":"ralphv","description":"A docker image that can check docker-compose updates and rebuild automatically.","archived":false,"fork":false,"pushed_at":"2024-03-30T19:25:13.000Z","size":158,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-24T21:14:48.242Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ralphv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-01-09T02:52:54.000Z","updated_at":"2024-03-12T20:10:14.000Z","dependencies_parsed_at":"2024-01-16T20:20:29.339Z","dependency_job_id":"d171315a-c4cb-4bf8-a43a-d6f63dc8d996","html_url":"https://github.com/ralphv/lookout","commit_stats":null,"previous_names":["ralphv/lookout"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/ralphv/lookout","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ralphv%2Flookout","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ralphv%2Flookout/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ralphv%2Flookout/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ralphv%2Flookout/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ralphv","download_url":"https://codeload.github.com/ralphv/lookout/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ralphv%2Flookout/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267085232,"owners_count":24033673,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-25T02:00:09.625Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-14T04:19:31.864Z","updated_at":"2025-07-25T23:41:50.322Z","avatar_url":"https://github.com/ralphv.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Lookout\n\nA docker image, similar to [watchtower](https://github.com/containrrr/watchtower), \nbut uses `docker-compose` commands to rebuild images and recreating. \nIt's intended to be used for services that have a build context rather than an image. For images, use [watchtower](https://github.com/containrrr/watchtower) as it is the best really. \n\nLookout is intended to be used in non production environments.\n\n## Quick Start\n\nLookout is intended to be used in a `docker-compose` setup.\n\n1. Add the following service to your existing docker compose file and follow the instructions closely for each item.\n\n    ```yaml\n    version: '3.4'\n    services:\n      lookout:\n        image: ralphv/lookout\n        container_name: lookout\n        restart: unless-stopped\n        environment:\n          - LOOKOUT_DOCKER_COMPOSE=\u003cfull local path to docker compose file\u003e\n        volumes:\n          - /var/run/docker.sock:/var/run/docker.sock\n          - ./lookout.config.yaml:/config/config.yaml\n          - \u003cfull local directory to docker compose location\u003e:\u003cfull local directory to docker compose location\u003e\n    ```\n    \n    The `\u003cfull local directory to docker compose location\u003e` **has to be the same on your host machine and your docker container.** \n    \n    This is because `docker-compose` identifies the files by their path, so when `docker-compose up` command is called, it will\n    know to recreate the existing instance rather than try to create a new container. \n    \n    Example: suppose your docker-compose file's full path is `/docker/home-lab-setup/docker-compose.yaml`\n    Then the `volumes` entry should look like this:\n    \n    ```yaml\n        volumes:\n          - /var/run/docker.sock:/var/run/docker.sock\n          - ./lookout.config.yaml:/config/config.yaml\n          - /docker/home-lab-setup:/docker/home-lab-setup\n    ```\n    \n    And you need to reflect the path correctly, including the yaml file, using the environment variable `LOOKOUT_DOCKER_COMPOSE` like this\n    \n    ```yaml\n        environment:\n          - LOOKOUT_DOCKER_COMPOSE=/docker/home-lab-setup/docker-compose.yaml\n    ```\n2. Set up your `lookout.config.yaml` file similar to this:\n\n    ```yaml\n        version: '1.0'\n        services:\n          simple-node-express:\n            images:\n              - node\n    ```\n    Basically, you need to specify the list of `services` lookout will monitor, and then\n    you will need to specify the list of images that your image depends on.\n    \n    Unlike [watchtower](https://github.com/containrrr/watchtower), you need to tell the container what images to check and when it detects a new image, `lookout` will\n    run the following commands\n    - `docker-compose pull $service`\n    - `docker-compose build $service`\n    - `docker-compose up -d $service`\n    \n    A future release will allow you to specify custom commands in case the default commands don't work well for your case.\n\n### List of environment variables:\n\n- `LOOKOUT_CONFIG`: The location of the config file, defaults to `/config/config.yaml`\n- `LOOKOUT_DOCKER_COMPOSE`: The location of the docker-compose file. This has to match the host path.\n- `LOOKOUT_LOG_LEVEL`: Defaults to `info`. Can be set to `debug` for more visibility.\n- `LOOKOUT_CRON`: The cron job expression for checking for updates. Defaults to `0 */6 * * *` Q 6 hours.\n- `LOOKOUT_SEND_SLACK_MESSAGES`: Whether to send Slack messages. Either `true` or `false`\n- `LOOKOUT_SLACK_WEBHOOK`: The webhook for Slack integration.\n\n### Known issues:\n* Currently, the code can't pull latest digests for images hosted at GitHub `ghcr.io/XXXX`. This is \nbecause, GitHub requires a token to use its API, the only method that I know of is to pull the image locally and inspect it.\n\n### Release notes:\n* 0.5.4: base image fix\n* 0.5.3: schema fix\n* 0.5.2: adding optional override per service for docker compose file and cwd\n* 0.5.1: minor log and docs fixes\n* 0.5.0: alpha release\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fralphv%2Flookout","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fralphv%2Flookout","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fralphv%2Flookout/lists"}