<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

# Contributing to the Accumulo Docker Image

Contributions to the Accumulo Docker Image can be made by creating a pull request to
this repo on GitHub.

Before creating a pull request, follow the instructions in the [README.md] to build
the image and use it to run Accumulo in Docker.

For general instructions on contributing to Accumulo projects, check out the
[Accumulo Contributor guide][contribute].

[README.md]: README.md
[contribute]: https://accumulo.apache.org/contributor/
