[![Go Report Card](https://goreportcard.com/badge/github.com/amir20/dozzle)](https://goreportcard.com/report/github.com/amir20/dozzle) [![Docker Pulls](https://img.shields.io/docker/pulls/amir20/dozzle.svg)](https://hub.docker.com/r/amir20/dozzle/) [![Docker Size](https://images.microbadger.com/badges/image/amir20/dozzle.svg)](https://hub.docker.com/r/amir20/dozzle/) [![Docker Version](https://images.microbadger.com/badges/version/amir20/dozzle.svg)](https://hub.docker.com/r/amir20/dozzle/) # Dozzle - [dozzle.dev](https://dozzle.dev/) Dozzle is a real-time log viewer for Docker. It's free. It's small. And it's in your browser. While dozzle should work for most, it is not meant to be a full logging solution. For enterprise use, I recommend you look at [Loggly](https://www.loggly.com), [Papertrail](https://papertrailapp.com) or [Kibana](https://www.elastic.co/products/kibana). But if you don't want to pay for these services, then Dozzle can help! Dozzle will be able to capture all logs from your containers and send them in real-time to your browser. Installation is also very easy. Dozzle is not a database. It does not store or save any logs. You can only see live logs while using Dozzle. ![Image](demo.gif) ## Getting dozzle Dozzle is a very small Docker container (4 MB compressed). Pull the latest release from the index: $ docker pull amir20/dozzle:latest ## Using dozzle The simplest way to use dozzle is to run the docker container. Also, mount the Docker Unix socket with `--volume` to `/var/run/docker.sock`: $ docker run --name dozzle -d --volume=/var/run/docker.sock:/var/run/docker.sock -p 8888:8080 amir20/dozzle:latest dozzle will be available at [http://localhost:8888/](http://localhost:8888/). You can change `-p 8888:8080` to any port. For example, if you want to view dozzle over port 4040 then you would do `-p 4040:8080`. ### With Docker swarm docker service create \ --name=dozzle \ --publish=8888:8080 \ --constraint=node.role==manager \ --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \ amir20/dozzle:latest ### With Docker compose version: "3" services: dozzle: container_name: dozzle image: amir20/dozzle:latest environment: - DOZZLE_TAILSIZE=100 - DOZZLE_FILTER=status=running volumes: - /var/run/docker.sock:/var/run/docker.sock ports: - 9999:8080 #### Security dozzle doesn't support authentication out of the box. You can control the device dozzle binds to by passing `--addr` parameter. For example, $ docker run --volume=/var/run/docker.sock:/var/run/docker.sock -p 8888:1224 amir20/dozzle:latest --addr localhost:1224 will bind to `localhost` on port `1224`. You can then use a reverse proxy to control who can see dozzle. If you wish to restrict the containers shown you can pass the `--filter` parameter. For example, $ docker run --volume=/var/run/docker.sock:/var/run/docker.sock -p 8888:1224 amir20/dozzle:latest --filter name=foo this would then only allow you to view containers with a name starting with "foo". You can use other filters like `status` as well, please check the official docker [command line docs](https://docs.docker.com/engine/reference/commandline/ps/#filtering) for available filters. #### Changing base URL dozzle by default mounts to "/". If you want to control the base path you can use the `--base` option. For example, if you want to mount at "/foobar", then you can override by using `--base /foobar`. See env variables below for using `DOZZLE_BASE` to change this. $ docker run --volume=/var/run/docker.sock:/var/run/docker.sock -p 8080:8080 amir20/dozzle:latest --base /foobar dozzle will be available at [http://localhost:8080/foobar/](http://localhost:8080/foobar/). #### Environment variables and configuration Dozzle follows the [12-factor](https://12factor.net/) model. Configurations can use the CLI flags or enviroment variables. The table below outlines all supported options and their respective env vars. | Flag | Env Variable | Default | | ------------ | -------------------- | ------- | | `--addr` | `DOZZLE_ADDR` | `:8080` | | `--base` | `DOZZLE_BASE` | `/` | | `--level` | `DOZZLE_LEVEL` | `info` | | `--showAll` | `DOZZLE_SHOWALL` | `false` | | n/a | `DOCKER_API_VERSION` | `1.38` | | `--tailSize` | `DOZZLE_TAILSIZE` | `300` | | `--filter` | `DOZZLE_FILTER` | `""` | ## License [MIT](LICENSE) ## Building To Build and test locally: 1. Install NodeJs. 2. Install Go. 3. Globally install [packr utility](https://github.com/gobuffalo/packr) with `go get -u github.com/gobuffalo/packr/packr` outside of dozzle directory. 4. Install [reflex](https://github.com/cespare/reflex) with `get -u github.com/cespare/reflex` outside of dozzle. 5. Install node modules with `npm install`. 6. Do `npm start` Instructions for Github actions can be found [here](.github/goreleaser/Dockerfile) which build and tests Dozzle.