Public | Automated Build

Last pushed: 16 hours ago
Short Description
Dockerized Atlassian Bitbucket
Full Description

Dockerized Atlassian Bitbucket

"Built for professional teams - Distributed version control system that makes it easy for you to collaborate with your team. The only collaborative Git solution that massively scales." - [Source]

Supported tags and respective Dockerfile links

Product Version Tags Dockerfile
Bitbucket 5.6.1 5.6.1, latest Dockerfile

Related Images

You may also like:

Make It Short

Docker-CLI:

Just type and follow the manual installation procedure in your browser:

$ docker run -d -p 7990:7990 --name bitbucket blacklabelops/bitbucket

Point your browser to http://yourdockerhost:7990

Setup

  1. Start database server for Bitbucket.
  2. Start Bitbucket.
  3. Manual Bitbucket setup.

Firstly, start the database server for Bitbucket:

Note: Change Password!

$ docker run --name postgres_bitbucket -d \
    -e 'POSTGRES_DB=bitbucketdb' \
    -e 'POSTGRES_USER=bitbucketdb' \
    -e 'POSTGRES_PASSWORD=jellyfish' \
    -e 'POSTGRES_ENCODING=UTF8' \
    blacklabelops/postgres

Secondly, start Bitbucket:

$ docker run -d --name bitbucket \
      --link postgres_bitbucket:postgres_bitbucket \
      -p 7990:7990 blacklabelops/bitbucket

Starts Crowd and links it to the postgresql instances. JDBC URL: jdbc:postgresql://postgres_bitbucket/bitbucketdb

Thirdly, configure your Bitbucket yourself and fill it with a test license.

Point your browser to http://yourdockerhost:7990

  1. Choose External for Database and fill out the form:
    • Database Type: PostgreSQL
    • Hostname: postgres_bitbucket
    • Port: 5432
    • Database name: bitbucketdb
    • Database username: bitbucketdb
    • Database password: jellyfish
  2. Create and enter license information
  3. Fill out the rest of the installation procedure.

Embedded Elasticsearch

If you want to use the Embedded Elasticsearch, override the default command:

Example:

$ docker run -d --name bitbucket \
    -v your-local-folder-or-volume:/var/atlassian/bitbucket \
    -p 7990:7990 \
    blacklabelops/bitbucket /opt/bitbucket/bin/start-bitbucket.sh -fg

A separate java process for Elasticsearch will be started.

SSH Keys

If you need to use SSH Keys to authenticate Bitbucket to other services (eg, replicating to Github), put the entire contents of what you want to have in the .ssh directory in a directory called 'ssh' on your persistant volume.

When the container is started, the contents of /var/atlassian/bitbucket/ssh directory will be copied to /home/bitbucket/.ssh, and the permissions will be set to 700.

Example:

$ docker run -d --name bitbucket \
    -v your-local-ssh-folder-or-volume:/var/atlassian/bitbucket/ssh \
    -e "BITBUCKET_PROXY_NAME=myhost.example.com" \
    -e "BITBUCKET_PROXY_PORT=443" \
    -e "BITBUCKET_PROXY_SCHEME=https" \
    blacklabelops/bitbucket

ssh keys will be copied and are available at runtime.

Alternatively copy the files in your running container and restart the container:

# Creating the folder
$ docker exec bitbucket mkdir -p /var/atlassian/bitbucket/ssh
# Copy the keys
$ docker cp your-local-ssh-folder your-container-name:/var/atlassian/bitbucket/ssh
# Restart container
$ docker restart your-container-name

Embedded Backup And Restore Clients

This image has the Atlassian Bitbucket Backup Client included. The homepage can be found HERE.The full documentation can be found HERE.

The client must be either executed inside the running container or inside a container that has the bitbucket
home directory as an attached volume.

Executing the backup client inside the running container:

$ docker exec bitbucket java -jar /opt/backupclient/bitbucket-backup-client/bitbucket-backup-client.jar --help

Displays the help page inside the container with name bitbucket.

Executing the restore client inside the running container:

$ docker exec bitbucket java -jar /opt/backupclient/bitbucket-backup-client/bitbucket-restore-client.jar --help

Displays the help page inside the container with name bitbucket.

The required parameters can be passed using environment variables:

  • BITBUCKET_HOME: Bitbucket home directory, should be already set in the running container.
  • BITBUCKET_BASEURL: Bitbucket base url.
  • BITBUCKET_USER: Bitbucket admin user name.
  • BITBUCKET_PASSWORD: Bitbucket admin password.

Example:

$ docker exec -it \
    -e "BITBUCKET_BASEURL=http://localhost:7990" \
    -e "BITBUCKET_USER=youradmin" \
    -e "BITBUCKET_PASSWORD=yourpassword" \
    bitbucket bash
$ java -jar ${BITBUCKET_BACKUP_CLIENT}/bitbucket-backup-client.jar

Executes the backup client.

Running in a separate container:

$ docker run --rm --name bitbucket_backup \
    -v your-local-bitbucket-folder-or-volume:/var/atlassian/bitbucket \
    -e "BITBUCKET_BASEURL=http://yourbitbucketserverurl:yourport" \
    -e "BITBUCKET_USER=youradmin" \
    -e "BITBUCKET_PASSWORD=yourpassword" \
    blacklabelops/bitbucket \
    java -jar /opt/backupclient/bitbucket-backup-client/bitbucket-backup-client.jar

Executing the backup client in a separate container that has access to bitbucket volume.

JVM memory settings

By default Bitbucket starts with -Xms=512m -Xmx=1g. In some cases, this may not be enough to work with.

If needed, you can specify your own memory settings:

$ docker run -d \
    -e "JVM_MINIMUM_MEMORY=2g" \
    -e "JVM_MAXIMUM_MEMORY=3g" \
    -p 7990:7990 \
    blacklabelops/bitbucket

This will start Bitbucket with -Xms=2g -Xmx=3g.

Proxy Configuration

You can specify your proxy host and proxy port with the environment variables BITBUCKET_PROXY_NAME and BITBUCKET_PROXY_PORT. The value will be set inside the Atlassian server.xml at startup!

When you use https then you also have to include the environment variable BITBUCKET_PROXY_SCHEME.

You can also specify the context path with BITBUCKET_CONTEXT_PATH.

Example HTTPS:

  • Proxy Name: myhost.example.com
  • Proxy Port: 443
  • Poxy Protocol Scheme: https

Just type:

$ docker run -d --name bitbucket \
    -e "BITBUCKET_PROXY_NAME=myhost.example.com" \
    -e "BITBUCKET_PROXY_PORT=443" \
    -e "BITBUCKET_PROXY_SCHEME=https" \
    blacklabelops/bitbucket

Will set the values inside the bitbucket.properties in /var/atlassian/bitbucket/bitbucket.properties

NGINX HTTP Proxy

This is an example on running Atlassian Bitbucket behind NGINX with 2 Docker commands!

First start Bitbucket:

$ docker run -d --name bitbucket \
    -e "BITBUCKET_CONTEXT_PATH=/bitbucket" \
    -e "BITBUCKET_PROXY_NAME=myhost.example.com" \
    -e "BITBUCKET_PROXY_PORT=80" \
    -e "BITBUCKET_PROXY_SCHEME=http" \
    blacklabelops/bitbucket

Example with dockertools

Then start NGINX:

$ docker run -d \
    -p 80:80 \
    --name nginx \
    --link bitbucket:bitbucket \
    -e "SERVER1SERVER_NAME=myhost.example.com" \
    -e "SERVER1REVERSE_PROXY_LOCATION1=/bitbucket" \
    -e "SERVER1REVERSE_PROXY_PASS1=http://bitbucket:7990" \
    -e "SERVER1REVERSE_PROXY_APPLICATION1: bitbucket"
    blacklabelops/nginx

Bitbucket will be available at http://myhost.example.com/bitbucket.

NGINX HTTPS Proxy

This is an example on running Atlassian Bitbucket behind NGINX-HTTPS with2 Docker commands!

Note: This is a self-signed certificate! Trusted certificates by letsencrypt are supported. Documentation can be found here: blacklabelops/nginx

First start Bitbucket:

$ docker run -d --name bitbucket \
    -e "BITBUCKET_PROXY_NAME=192.168.99.100" \
    -e "BITBUCKET_PROXY_PORT=80" \
    -e "BITBUCKET_PROXY_SCHEME=http" \
    blacklabelops/bitbucket

Example with dockertools

Then start NGINX:

$ docker run -d \
    -p 443:443 \
    --name nginx \
    --link bitbucket:bitbucket \
    -e "SERVER1REVERSE_PROXY_LOCATION1=/" \
    -e "SERVER1REVERSE_PROXY_PASS1=http://bitbucket:7990" \
    -e "SERVER1CERTIFICATE_DNAME=/CN=CrustyClown/OU=SpringfieldEntertainment/O=crusty.springfield.com/L=Springfield/C=US" \
    -e "SERVER1HTTPS_ENABLED=true" \
    -e "SERVER1HTTP_ENABLED=false" \
    blacklabelops/nginx

Bitbucket will be available at https://192.168.99.100.

Vagrant

First install:

Vagrant is fabulous tool for pulling and spinning up virtual machines like docker with containers. I can configure my development and test environment and simply pull it online. And so can you! Install Vagrant and Virtualbox and spin it up. Change into the project folder and build the project on the spot!

$ vagrant up
$ vagrant ssh
[vagrant@localhost ~]$ cd /vagrant
[vagrant@localhost ~]$ docker-compose up

Bitbucket will be available on http://localhost:8080 on the host machine.

Support

Leave a message and ask questions on Hipchat: blacklabelops/hipchat

References

Docker Pull Command
Owner
blacklabelops
Source Repository