{"id":33261457,"url":"https://github.com/roribio/alpine-sqs","last_synced_at":"2025-11-21T21:03:02.164Z","repository":{"id":54695628,"uuid":"100832567","full_name":"roribio/alpine-sqs","owner":"roribio","description":"Dockerized ElasticMQ server + web UI over Alpine Linux for local development","archived":false,"fork":false,"pushed_at":"2024-05-06T14:41:56.000Z","size":226,"stargazers_count":265,"open_issues_count":27,"forks_count":55,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-09-27T07:36:24.173Z","etag":null,"topics":["alpine","aws-sqs","docker","elasticmq","elasticmq-server","sqs","sqs-insight","webui"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/roribio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":"roribio","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2017-08-20T02:09:31.000Z","updated_at":"2025-07-04T16:53:55.000Z","dependencies_parsed_at":"2022-08-14T00:20:09.449Z","dependency_job_id":null,"html_url":"https://github.com/roribio/alpine-sqs","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/roribio/alpine-sqs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roribio%2Falpine-sqs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roribio%2Falpine-sqs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roribio%2Falpine-sqs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roribio%2Falpine-sqs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/roribio","download_url":"https://codeload.github.com/roribio/alpine-sqs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roribio%2Falpine-sqs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285689538,"owners_count":27215143,"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-11-21T02:00:06.175Z","response_time":61,"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":["alpine","aws-sqs","docker","elasticmq","elasticmq-server","sqs","sqs-insight","webui"],"created_at":"2025-11-17T04:00:29.401Z","updated_at":"2025-11-21T21:03:02.159Z","avatar_url":"https://github.com/roribio.png","language":"Dockerfile","funding_links":["https://github.com/sponsors/roribio"],"categories":["Queues"],"sub_categories":["Kubernetes Storage"],"readme":"# Alpine SQS _(alpine-sqs)_\n\n![banner](https://raw.githubusercontent.com/roribio/alpine-sqs/master/banner.png)\n\n[![](https://images.microbadger.com/badges/image/roribio16/alpine-sqs.svg)](https://microbadger.com/images/roribio16/alpine-sqs \"Get your own image badge on microbadger.com\") [![](https://images.microbadger.com/badges/version/roribio16/alpine-sqs.svg)](https://microbadger.com/images/roribio16/alpine-sqs \"Get your own version badge on microbadger.com\") [![Docker Pulls](https://img.shields.io/docker/stars/roribio16/alpine-sqs.svg)](https://hub.docker.com/r/roribio16/alpine-sqs/) [![Docker Pulls](https://img.shields.io/docker/pulls/roribio16/alpine-sqs.svg)](https://hub.docker.com/r/roribio16/alpine-sqs/) [![standard-readme compliant](https://img.shields.io/badge/readme%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme)\n\n\u003e Dockerized ElasticMQ server + web UI over Alpine Linux for local development.\n\nAlpine SQS provides a containerized Java implementation of the Amazon Simple Queue Service (AWS-SQS). It is based on ElasticMQ running Alpine Linux and the Oracle Java 8 Server-JRE. It is compatible with AWS's API, CLI as well as the Amazon Java SDK. This allows for quicker local development without having to incurr in infrastructure costs.\n\nThe goal of this repository is to maintain an updated Docker environment for ElasticMQ with an integrated web UI for visualizing queues and messages.\n\n## Table of Contents\n\n- [Background](#background)\n- [Install](#install)\n- [Usage](#usage)\n- [Maintainer](#maintainer)\n- [Contribute](#contribute)\n- [License](#license)\n\n## Background\nWhen searching for existing local implementations of SQS I came across a Docker image by [@vsouza](https://github.com/vsouza) called [docker-SQS-local](https://github.com/vsouza/docker-SQS-local) with over 11K pulls at the time.\n\nThis introduced me to ElasticMQ, which this project is based on and is described by it's creators as:\n\n\u003e a  message queue system, offering an actor-based Scala and an SQS-compatible REST (query) interface.\n\nUsing his work as inspiration I decided to improve upon it by implementing the following:\n\n- Reduce the Docker image foot-print as much as possible.\n- Automatically update to the latest ElasticMQ server.\n- Integrated UI for message-queue visualization.\n- Automatic tests \u0026 builds (work in progress).\n- Thorough documentation.\n\n### See also\nFor more information on the different projects this work is based on, please visit:\n\n- [ElasticMQ](https://github.com/adamw/elasticmq) by [@adamw](https://github.com/adamw).\n- [sqs-insight](https://github.com/kobim/sqs-insight) fork by [kobim](https://github.com/kobim/). Fork of [finanzcheck's now-archived sqs-insight](https://github.com/finanzcheck/sqs-insight).\n- [docker-alpine-java](https://github.com/anapsix/docker-alpine-java) by [anapsix](https://github.com/anapsix).\n\n## Install\n### Pre-requisites\n\nTo be able to use this environment, please make sure you have installed the latest version of [Docker](https://docs.docker.com/engine/installation/). \n\nIf you intend to build the environment yourself, it is recommended that you also install the latest version of [Docker Compose](https://docs.docker.com/compose/install/).\n\n### Installation methods\nYou can obtain the environment in two ways; The easiest is to pull the image directly from Docker Hub. Also, you may clone this repository and build/run it using Docker Compose.\n#### 1. Pulling from Docker Hub\n```\ndocker pull roribio16/alpine-sqs\n```\n#### 2. Building from scratch\n```\ngit clone https://github.com/roribio/alpine-sqs.git\n```\n## Usage\n### Running the environment\nDepending on how you chose to install the environment, you can initialize it in three ways:\n\n#### 1. `docker run` method\nUse this method if you're pulling directly from Docker Hub and do not have a `docker-compose.yml` file.\n\n```\ndocker run --name alpine-sqs -p 9324:9324 -p 9325:9325 -d roribio16/alpine-sqs:latest\n```\n\nCustom configuration files may be used to override default behaviors. You can mount a volume mapping the container's `/opt/custom` directory to a folder in your host machine where the custom configuration files are stored.\n\nProviding for sake of example that in your host machine directory `/opt/alpine-sqs` you have both `elasticmq.conf` and `sqs-insight.conf` files, you can run the container with:\n\n```\ndocker run --name alpine-sqs -p 9324:9324 -p 9325:9325 -v /opt/alpine-sqs:/opt/custom -d roribio16/alpine-sqs:latest\n```\n\nFor any configuration file not explicitly included in the container's `/opt/custom` directory, `alpine-sqs` will fall back to using the default configuration files listed [here](https://github.com/roribio/alpine-sqs/tree/master/opt).\n\n#### 2. `docker-compose up` method\nIf you've cloned the repository you can still take advantage of the image present in Docker Hub by running the container from the default `docker-compose.yml` file. This will pull the pre-built image from the public registry and run it with the same values stated in the previous method.\n\n```\ndocker-compose up -d\n```\n\n#### 3. `docker-compose up --build` method\nTo build the image from scratch and then run the corresponding container, use this method.\n\n```\ndocker-compose -f docker-compose.build up -d --build\n```\n\n\u003e **Note**: To use any of the Docker Compose methods, you need to clone this repository as well as have Docker Compose installed.\n\n\u003e\u003e **Note 2**: Depending on your platform, you may need to adjust how you declare mounted volumes. You can find instructions for your specific platform [here](https://github.com/roribio/alpine-sqs/wiki/Sharing-files-with-host-machine).\n\n### Working with queues\nElasticMQ provides an Amazon-SQS compatible interface. This means you may use the AWS command-line tool, API calls and the Java SDK, to interact with local queues the same as if interacting with the actual SQS.\n\n#### Default queue\nThe default configuration provisions ElasticMQ with a initial queue of the same name at run time. This allows you to start pushing messages to the queue without further configuration. \n\nTo make use of this queue, point your client to: `http://localhost:9324/queue/default`.\n\n#### Dead letter queue\nThe default dead letter queue is called dlq, configured in [opt/elasticmq.conf](https://github.com/softwaremill/elasticmq#automatically-creating-queues-on-startup)\n\n#### Sending a message\nTo send messages to a queue you need to specify the new endpoint url and queue url along with the message payload. The following example uses the AWS CLI to send a message to the `default` queue. \n\n```\naws --endpoint-url http://localhost:9324 sqs send-message --queue-url http://localhost:9324/queue/default --message-body \"Hello, queue!\"\n```\n\n#### Viewing messages\nTo view messages, navigate to the web UI ([sqs-insight](https://github.com/finanzcheck/sqs-insight)) by pointing your web browser to `http://localhost:9325`.\n\nYou can also poll for messages from the command-line like so:\n\n```\naws --endpoint-url http://localhost:9324 sqs receive-message --queue-url http://localhost:9324/queue/default --wait-time-seconds 10\n```\n\n### Creating new queues\nYou can create new queues by using the command-line or configuring ElasticMQ directly.\n\n##### AWS CLI\n```\naws --endpoint-url http://localhost:9324 sqs create-queue --queue-name newqueue\n```\n\n##### Edit ElasticMQ configuration file\nNavigate to the directory where the configuration files reside and edit the `elasticmq.conf` file to add a new entry for each queue to the `queue` block.\n\n```\nqueues {\n    default {\n        defaultVisibilityTimeout = 10 seconds\n        delay = 5 seconds\n        receiveMessageWait = 0 seconds\n    },\n    newqueue {\n        defaultVisibilityTimeout = 10 seconds\n        delay = 5 seconds\n        receiveMessageWait = 0 seconds\n    }\n}\n```\n\n\u003e **Note**: The configuration directory location inside the container is located at `/opt/config`. If you mounted that volume onto your host, you can also find the configuration files there.\n\nAfter editing the `elasticmq.conf` file, you need to restart the ElasticMQ server by running the `supervisorctl restart elasticmq` command inside the container. If you're editing the configuration file outside of the container, use this command: \n\n```\ndocker exec -it alpine-sqs sh -c \"supervisorctl restart elasticmq\"\n``` \n\n#### Registering new queues with the UI\nTo be able to visualize newly created queues, you need to edit the `sqs-insight.conf` file to register the new queue with the UI server. Edits to this file are automatically detected by the server and does not require a restart.\n\nConfigure a new endpoint like this:\n\n```\n\"endpoints\": [\n        {\n           \"key\": \"notValidKey\",\n           \"secretKey\": \"notValidSecret\",\n           \"region\": \"eu-central-1\",\n           \"url\": \"http://localhost:9324/queue/default\"\n        },\n        {\n           \"key\": \"notValidKey\",\n           \"secretKey\": \"notValidSecret\",\n           \"region\": \"eu-central-1\",\n           \"url\": \"http://localhost:9324/queue/newqueue\"\n        }\n    ]\n\n```\n\nAll the fields, except the `url` field, are required by `sqs-insight` to function but are not used when pointing it to a local queue server. This means that the values in those fields are not relevant for the UI to work correctly.\n\n\u003e Consult the [AWS CLI Command Reference](http://docs.aws.amazon.com/cli/latest/reference/sqs/index.html#cli-aws-sqs) or the [AWS SDK for Java](http://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/examples-sqs-message-queues.html) guide for more examples and information.\n\n## Maintainer\nRonald E. Oribio R. - [@roribio](https://github.com/roribio).\n\n## Contribute\nPRs are accepted and encouraged!\n\nPlease direct any questions, requests, or comments to the [Issues](https://github.com/roribio/alpine-sqs/issues) section of this project. \n\n**Note:** If editing this Readme, please conform to the [standard-readme](https://github.com/RichardLitt/standard-readme) specification.\n\n## License\nCopyright 2017 Ronald E. Oribio R.\n\nThis project is licensed under the GNU General Public License, version 3.0. See the [LICENSE](./LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froribio%2Falpine-sqs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froribio%2Falpine-sqs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froribio%2Falpine-sqs/lists"}