apache / couchdb-docker

Semi-official Apache CouchDB Docker images
https://github.com/apache/couchdb-docker
Apache License 2.0
263 stars 137 forks source link

3.x docker image requires usernames longer than a single character #206

Open josegonzalez opened 3 years ago

josegonzalez commented 3 years ago

Expected Behavior

I expect to be able to set a username via the COUCHDB_USER environment variable with a length of 1 character.

Current Behavior

Previous versions of the docker image did not have any validation on service start. The current versions fails if the specified COUCHDB_USER is a single character.

You'll see the following message on container start with a single-character username:

*************************************************************
ERROR: CouchDB 3.0+ will no longer run in "Admin Party"
       mode. You *MUST* specify an admin user and
       password, either via your own .ini file mapped
       into the container at /opt/couchdb/etc/local.ini
       or inside /opt/couchdb/etc/local.d, or with
       "-e COUCHDB_USER=admin -e COUCHDB_PASSWORD=password"
       to set it via "docker run".
*************************************************************

I believe the cause is the \w+ in the regex check here

Possible Solution

I think changing the \w+ to \w* will allow the previous behavior.

Steps to Reproduce (for bugs)

docker run -e COUCHDB_USER=l -e COUCHDB_PASSWORD=password -d couchdb

Here is an example of downstream usage of the image where it just constantly restarts the container (though the error message isn't surfaced as I don't surface that in the tests):

https://github.com/dokku/dokku-couchdb/runs/3578023307?check_suite_focus=true

Context

This breaks my tests, which I try to sync between all datastore plugins. Fixing it just means increasing the username length, but its annoying since now I can't easily copy the files over as tests change.

That said, its not a super-critical bug, just an annoying one.

Your Environment

wohali commented 3 years ago

That line has had \w+ in it for quite some time, at least since 3.1.0:

https://github.com/apache/couchdb-docker/pull/181/files retained it

\w+ should match on 1 or more characters. Setting it to \w* will mean matching 0 or more characters that aren't prefixed with ;, which is not what we want.

What was the last version that you used that worked?

josegonzalez commented 3 years ago

The last image that worked was 2.3.1, which I don't think had this check.