├── .gitignore ├── .dockerignore ├── docker-compose.yml ├── LTR-8-19 ├── docker-compose.yml └── Dockerfile ├── 8-9-postgresql ├── docker-compose.yml └── Dockerfile ├── README.md └── Dockerfile /.gitignore: -------------------------------------------------------------------------------- 1 | .settings/ 2 | .project 3 | .idea/ 4 | .git/ 5 | .DS_Store 6 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | **/.git 2 | **/.gitignore 3 | **/README.md 4 | **/docker-compose.yml 5 | **/LTR-8-19/** 6 | **/jdk/** -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.4' 2 | services: 3 | bitbucket: 4 | build: 5 | context: . 6 | dockerfile: Dockerfile 7 | container_name: bitbucket-srv 8 | environment: 9 | - TZ=Asia/Shanghai 10 | depends_on: 11 | - mysql 12 | ports: 13 | - "7990:7990" 14 | - "7999:7999" 15 | volumes: 16 | - home_data:/var/bitbucket 17 | restart: always 18 | networks: 19 | - network-bridge 20 | 21 | mysql: 22 | image: mysql:8 23 | container_name: mysql-bitbucket 24 | environment: 25 | - TZ=Asia/Shanghai 26 | - MYSQL_DATABASE=bitbucket 27 | - MYSQL_ROOT_PASSWORD=123456 28 | - MYSQL_USER=bitbucket 29 | - MYSQL_PASSWORD=123123 30 | command: ['mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_bin'] 31 | # ports: 32 | # - "13306:3306" 33 | volumes: 34 | - mysql_data:/var/lib/mysql 35 | restart: always 36 | networks: 37 | - network-bridge 38 | 39 | networks: 40 | network-bridge: 41 | driver: bridge 42 | 43 | volumes: 44 | home_data: 45 | external: false 46 | mysql_data: 47 | external: false 48 | -------------------------------------------------------------------------------- /LTR-8-19/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.4' 2 | services: 3 | bitbucket: 4 | build: 5 | context: . 6 | dockerfile: Dockerfile 7 | container_name: bitbucket-srv 8 | environment: 9 | - TZ=Asia/Shanghai 10 | - JDBC_DRIVER=org.postgresql.Driver 11 | - JDBC_URL=jdbc:postgresql://postgres:5432/bitbucket 12 | - JDBC_USER=bitbucket 13 | - JDBC_PASSWORD=bitbucket 14 | depends_on: 15 | - postgres 16 | ports: 17 | - "7990:7990" 18 | - "7999:7999" 19 | volumes: 20 | - home_data:/var/bitbucket 21 | restart: always 22 | networks: 23 | - network-bridge 24 | 25 | postgres: 26 | image: postgres:13 27 | container_name: postgres-bitbucket 28 | environment: 29 | - POSTGRES_DB=bitbucket 30 | - POSTGRES_USER=bitbucket 31 | - POSTGRES_PASSWORD=bitbucket 32 | volumes: 33 | - postgres_data:/var/lib/postgresql/data 34 | restart: always 35 | networks: 36 | - network-bridge 37 | 38 | networks: 39 | network-bridge: 40 | driver: bridge 41 | 42 | volumes: 43 | home_data: 44 | external: false 45 | postgres_data: 46 | external: false 47 | -------------------------------------------------------------------------------- /8-9-postgresql/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.4' 2 | services: 3 | bitbucket: 4 | build: 5 | context: . 6 | dockerfile: Dockerfile 7 | container_name: bitbucket-srv 8 | environment: 9 | - TZ=Asia/Shanghai 10 | - JDBC_DRIVER=org.postgresql.Driver 11 | - JDBC_URL=jdbc:postgresql://postgres:5432/bitbucket 12 | - JDBC_USER=bitbucket 13 | - JDBC_PASSWORD=bitbucket 14 | depends_on: 15 | - postgres 16 | ports: 17 | - "7990:7990" 18 | - "7999:7999" 19 | volumes: 20 | - home_data:/var/bitbucket 21 | restart: always 22 | networks: 23 | - network-bridge 24 | 25 | postgres: 26 | image: postgres:13 27 | container_name: postgres-bitbucket 28 | environment: 29 | - POSTGRES_DB=bitbucket 30 | - POSTGRES_USER=bitbucket 31 | - POSTGRES_PASSWORD=bitbucket 32 | volumes: 33 | - postgres_data:/var/lib/postgresql/data 34 | restart: always 35 | networks: 36 | - network-bridge 37 | 38 | networks: 39 | network-bridge: 40 | driver: bridge 41 | 42 | volumes: 43 | home_data: 44 | external: false 45 | postgres_data: 46 | external: false 47 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # bitbucket 2 | 3 | [README](README.md) | [中文文档](README_zh.md) 4 | 5 | + LTR Version: v8.9.19 - MYSQL and PostgreSQL 6 | + LTR Version: v8.19.9 7 | 8 | 9 | Thanks to: [voarsh2](https://github.com/voarsh2) for [Bitbucket test data](https://github.com/haxqer/jira/issues/30) 10 | 11 | v8.x+ requires an [updated agent](https://github.com/haxqer/bitbucket/issues/1) 12 | 13 | default port: 7990 14 | 15 | ## requirement 16 | - docker: 17.09.0+ 17 | - docker-compose: 1.24.0+ 18 | 19 | ## How to run with docker-compose 20 | 21 | - start bitbucket & mysql 22 | 23 | ``` 24 | git clone https://github.com/haxqer/bitbucket.git \ 25 | && cd bitbucket \ 26 | && docker-compose pull \ 27 | && docker-compose up 28 | ``` 29 | 30 | - start bitbucket & mysql daemon 31 | 32 | ``` 33 | docker-compose up -d 34 | ``` 35 | 36 | - default db(mysql8.0) configure: 37 | 38 | ```bash 39 | driver=mysql8.0 40 | host=mysql-bitbucket 41 | port=3306 42 | db=bitbucket 43 | user=root 44 | passwd=123456 45 | ``` 46 | 47 | ## How to run with docker 48 | 49 | - start bitbucket 50 | 51 | ``` 52 | docker volume create bitbucket_home_data && docker network create bitbucket-network && docker run -p 7990:7990 -p 7999:7999 -v bitbucket_home_data:/var/bitbucket --network bitbucket-network --name bitbucket-srv -e TZ='Asia/Shanghai' haxqer/bitbucket:8.9.6 53 | ``` 54 | 55 | - config your own db: 56 | 57 | 58 | ## Bitbucket 8.x does not allow new MYSQL installations. Use DB migratior to migrate to PostgreSQL 59 | 60 | 61 | ## How to hack bitbucket 62 | 63 | ``` 64 | docker exec bitbucket-srv java -jar /var/agent/atlassian-agent.jar \ 65 | -p bitbucket \ 66 | -m Hello@world.com \ 67 | -n Hello@world.com \ 68 | -o your-org \ 69 | -d \ 70 | -s you-server-id-xxxx 71 | ``` 72 | 73 | ## How to hack bitbucket plugin 74 | 75 | - .eg I want to use BigGantt plugin 76 | 1. Install BigGantt from jira marketplace. 77 | 2. Find `App Key` of BigGantt is : `eu.softwareplant.biggantt` 78 | 3. Execute : 79 | 80 | ``` 81 | docker exec bitbucket-srv java -jar /var/agent/atlassian-agent.jar \ 82 | -p eu.softwareplant.biggantt \ 83 | -m Hello@world.com \ 84 | -n Hello@world.com \ 85 | -o your-org \ 86 | -d \ 87 | -s you-server-id-xxxx 88 | ``` 89 | 90 | -------------------------------------------------------------------------------- /8-9-postgresql/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1.4 2 | FROM eclipse-temurin:11-jdk-jammy AS builder 3 | 4 | ARG BITBUCKET_VERSION=8.9.19 5 | ARG BITBUCKET_PRODUCT=bitbucket-software 6 | ARG AGENT_VERSION=1.3.3 7 | ARG GIT_VERSION=2.42.0 8 | 9 | # Install build dependencies and Git 10 | RUN --mount=type=cache,target=/var/cache/apt \ 11 | apt-get update && \ 12 | apt-get install -y curl make libssl-dev libghc-zlib-dev libcurl4-gnutls-dev libexpat1-dev gettext unzip zip 13 | 14 | # Build Git 15 | RUN curl -sL https://github.com/git/git/archive/v${GIT_VERSION}.zip -o git.zip && \ 16 | unzip git.zip && \ 17 | cd git-* && \ 18 | make prefix=/usr/local all && \ 19 | make prefix=/usr/local install && \ 20 | cd .. && \ 21 | rm -rf git-* git.zip 22 | 23 | # Install Git LFS 24 | RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash && \ 25 | apt-get install -y git-lfs && \ 26 | git lfs install --system 27 | 28 | # Download and prepare Bitbucket files 29 | RUN mkdir -p /opt/bitbucket /var/bitbucket /var/agent && \ 30 | curl -fLo /var/agent/atlassian-agent.jar https://bamboo.hosttweb.com/artifact/AA-AA/JOB1/build-46/jar/atlassian-agent-jar-with-dependencies.jar && \ 31 | curl -fLo /tmp/atlassian.tar.gz https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz && \ 32 | tar xzf /tmp/atlassian.tar.gz -C /opt/bitbucket/ --strip-components 1 && \ 33 | rm -f /tmp/atlassian.tar.gz 34 | 35 | # Final stage 36 | FROM eclipse-temurin:11-jdk-jammy 37 | 38 | LABEL maintainer="haxqer " version="8.9.19" 39 | 40 | ENV BITBUCKET_USER=bitbucket \ 41 | BITBUCKET_GROUP=bitbucket \ 42 | BITBUCKET_HOME=/var/bitbucket \ 43 | BITBUCKET_INSTALL=/opt/bitbucket \ 44 | JVM_MINIMUM_MEMORY=2g \ 45 | JVM_MAXIMUM_MEMORY=6g \ 46 | JVM_CODE_CACHE_ARGS='-XX:InitialCodeCacheSize=1g -XX:ReservedCodeCacheSize=2g' \ 47 | AGENT_PATH=/var/agent \ 48 | AGENT_FILENAME=atlassian-agent.jar 49 | 50 | ENV JAVA_OPTS="-javaagent:${AGENT_PATH}/${AGENT_FILENAME} ${JVM_CODE_CACHE_ARGS} -Dbitbucket.home=${BITBUCKET_HOME}" 51 | ENV OPENSEARCH_JAVA_OPTS="${JAVA_OPTS}" 52 | 53 | # Copy built artifacts from builder stage 54 | COPY --from=builder /usr/local/bin/git* /usr/local/bin/ 55 | COPY --from=builder /usr/local/libexec/git-core /usr/local/libexec/git-core 56 | COPY --from=builder /opt/bitbucket ${BITBUCKET_INSTALL} 57 | COPY --from=builder /var/agent ${AGENT_PATH} 58 | 59 | RUN apt-get update && \ 60 | apt-get install -y --no-install-recommends git-lfs && \ 61 | apt-get clean && \ 62 | rm -rf /var/lib/apt/lists/* && \ 63 | groupadd -r ${BITBUCKET_GROUP} && \ 64 | useradd -r -g ${BITBUCKET_GROUP} ${BITBUCKET_USER} && \ 65 | git lfs install --system && \ 66 | mkdir -p ${BITBUCKET_HOME} && \ 67 | chown -R ${BITBUCKET_USER}:${BITBUCKET_GROUP} ${BITBUCKET_INSTALL} ${BITBUCKET_HOME} ${AGENT_PATH} 68 | 69 | VOLUME ${BITBUCKET_HOME} 70 | USER ${BITBUCKET_USER} 71 | WORKDIR ${BITBUCKET_INSTALL} 72 | EXPOSE 7990 7999 73 | 74 | ENTRYPOINT ["/opt/bitbucket/bin/start-bitbucket.sh", "-fg"] -------------------------------------------------------------------------------- /LTR-8-19/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1.4 2 | FROM eclipse-temurin:17-jdk-jammy AS builder 3 | 4 | ARG BITBUCKET_VERSION=8.19.9 5 | ARG BITBUCKET_PRODUCT=bitbucket-software 6 | ARG AGENT_VERSION=1.3.3 7 | ARG MYSQL_DRIVER_VERSION=8.0.22 8 | ARG GIT_VERSION=2.42.0 9 | 10 | # Install build dependencies and Git 11 | RUN --mount=type=cache,target=/var/cache/apt \ 12 | apt-get update && \ 13 | apt-get install -y curl make libssl-dev libghc-zlib-dev libcurl4-gnutls-dev libexpat1-dev gettext unzip zip 14 | 15 | # Build Git 16 | RUN curl -sL https://github.com/git/git/archive/v${GIT_VERSION}.zip -o git.zip && \ 17 | unzip git.zip && \ 18 | cd git-* && \ 19 | make prefix=/usr/local all && \ 20 | make prefix=/usr/local install && \ 21 | cd .. && \ 22 | rm -rf git-* git.zip 23 | 24 | # Install Git LFS 25 | RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash && \ 26 | apt-get install -y git-lfs && \ 27 | git lfs install --system 28 | 29 | # Download and prepare Bitbucket files 30 | RUN mkdir -p /opt/bitbucket /var/bitbucket /var/agent && \ 31 | curl -fLo /var/agent/atlassian-agent.jar https://bamboo.hosttweb.com/artifact/AA-AA/JOB1/build-46/jar/atlassian-agent-jar-with-dependencies.jar && \ 32 | curl -fLo /tmp/atlassian.tar.gz https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz && \ 33 | tar xzf /tmp/atlassian.tar.gz -C /opt/bitbucket/ --strip-components 1 && \ 34 | rm -f /tmp/atlassian.tar.gz 35 | 36 | # Final stage 37 | FROM eclipse-temurin:17-jdk-jammy 38 | 39 | LABEL maintainer="haxqer " version="8.19.9" 40 | 41 | ENV BITBUCKET_USER=bitbucket \ 42 | BITBUCKET_GROUP=bitbucket \ 43 | BITBUCKET_HOME=/var/bitbucket \ 44 | BITBUCKET_INSTALL=/opt/bitbucket \ 45 | JVM_MINIMUM_MEMORY=2g \ 46 | JVM_MAXIMUM_MEMORY=6g \ 47 | JVM_CODE_CACHE_ARGS='-XX:InitialCodeCacheSize=1g -XX:ReservedCodeCacheSize=2g' \ 48 | AGENT_PATH=/var/agent \ 49 | AGENT_FILENAME=atlassian-agent.jar 50 | 51 | ENV JAVA_OPTS="-javaagent:${AGENT_PATH}/${AGENT_FILENAME} ${JVM_CODE_CACHE_ARGS} -Dbitbucket.home=${BITBUCKET_HOME}" 52 | ENV OPENSEARCH_JAVA_OPTS="${JAVA_OPTS}" 53 | 54 | # Copy built artifacts from builder stage 55 | COPY --from=builder /usr/local/bin/git* /usr/local/bin/ 56 | COPY --from=builder /usr/local/libexec/git-core /usr/local/libexec/git-core 57 | COPY --from=builder /opt/bitbucket ${BITBUCKET_INSTALL} 58 | COPY --from=builder /var/agent ${AGENT_PATH} 59 | 60 | RUN apt-get update && \ 61 | apt-get install -y --no-install-recommends git-lfs && \ 62 | apt-get clean && \ 63 | rm -rf /var/lib/apt/lists/* && \ 64 | groupadd -r ${BITBUCKET_GROUP} && \ 65 | useradd -r -g ${BITBUCKET_GROUP} ${BITBUCKET_USER} && \ 66 | git lfs install --system && \ 67 | mkdir -p ${BITBUCKET_HOME} && \ 68 | chown -R ${BITBUCKET_USER}:${BITBUCKET_GROUP} ${BITBUCKET_INSTALL} ${BITBUCKET_HOME} ${AGENT_PATH} 69 | 70 | VOLUME ${BITBUCKET_HOME} 71 | USER ${BITBUCKET_USER} 72 | WORKDIR ${BITBUCKET_INSTALL} 73 | EXPOSE 7990 7999 74 | 75 | ENTRYPOINT ["/opt/bitbucket/bin/start-bitbucket.sh", "-fg"] -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1.4 2 | FROM eclipse-temurin:11-jdk-jammy AS builder 3 | 4 | ARG BITBUCKET_VERSION=8.9.19 5 | ARG BITBUCKET_PRODUCT=bitbucket-software 6 | ARG AGENT_VERSION=1.3.3 7 | ARG MYSQL_DRIVER_VERSION=8.0.22 8 | ARG GIT_VERSION=2.42.0 9 | 10 | # Install build dependencies and Git 11 | RUN --mount=type=cache,target=/var/cache/apt \ 12 | apt-get update && \ 13 | apt-get install -y curl make libssl-dev libghc-zlib-dev libcurl4-gnutls-dev libexpat1-dev gettext unzip zip 14 | 15 | # Build Git 16 | RUN curl -sL https://github.com/git/git/archive/v${GIT_VERSION}.zip -o git.zip && \ 17 | unzip git.zip && \ 18 | cd git-* && \ 19 | make prefix=/usr/local all && \ 20 | make prefix=/usr/local install && \ 21 | cd .. && \ 22 | rm -rf git-* git.zip 23 | 24 | # Install Git LFS 25 | RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash && \ 26 | apt-get install -y git-lfs && \ 27 | git lfs install --system 28 | 29 | # Download and prepare Bitbucket files 30 | RUN mkdir -p /opt/bitbucket /var/bitbucket /var/agent && \ 31 | curl -fLo /var/agent/atlassian-agent.jar https://bamboo.hosttweb.com/artifact/AA-AA/JOB1/build-46/jar/atlassian-agent-jar-with-dependencies.jar && \ 32 | curl -fLo /tmp/atlassian.tar.gz https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz && \ 33 | tar xzf /tmp/atlassian.tar.gz -C /opt/bitbucket/ --strip-components 1 && \ 34 | rm -f /tmp/atlassian.tar.gz && \ 35 | mkdir -p /opt/bitbucket/app/WEB-INF/lib && \ 36 | curl -fLo /opt/bitbucket/app/WEB-INF/lib/mysql-connector-java-${MYSQL_DRIVER_VERSION}.jar https://repo1.maven.org/maven2/mysql/mysql-connector-java/${MYSQL_DRIVER_VERSION}/mysql-connector-java-${MYSQL_DRIVER_VERSION}.jar 37 | 38 | # Final stage 39 | FROM eclipse-temurin:11-jdk-jammy 40 | 41 | LABEL maintainer="haxqer " version="8.9.19" 42 | 43 | ENV BITBUCKET_USER=bitbucket \ 44 | BITBUCKET_GROUP=bitbucket \ 45 | BITBUCKET_HOME=/var/bitbucket \ 46 | BITBUCKET_INSTALL=/opt/bitbucket \ 47 | JVM_MINIMUM_MEMORY=2g \ 48 | JVM_MAXIMUM_MEMORY=6g \ 49 | JVM_CODE_CACHE_ARGS='-XX:InitialCodeCacheSize=1g -XX:ReservedCodeCacheSize=2g' \ 50 | AGENT_PATH=/var/agent \ 51 | AGENT_FILENAME=atlassian-agent.jar 52 | 53 | ENV JAVA_OPTS="-javaagent:${AGENT_PATH}/${AGENT_FILENAME} ${JVM_CODE_CACHE_ARGS} -Dbitbucket.home=${BITBUCKET_HOME}" 54 | ENV OPENSEARCH_JAVA_OPTS="${JAVA_OPTS}" 55 | 56 | # Copy built artifacts from builder stage 57 | COPY --from=builder /usr/local/bin/git* /usr/local/bin/ 58 | COPY --from=builder /usr/local/libexec/git-core /usr/local/libexec/git-core 59 | COPY --from=builder /opt/bitbucket ${BITBUCKET_INSTALL} 60 | COPY --from=builder /var/agent ${AGENT_PATH} 61 | 62 | RUN apt-get update && \ 63 | apt-get install -y --no-install-recommends git-lfs && \ 64 | apt-get clean && \ 65 | rm -rf /var/lib/apt/lists/* && \ 66 | groupadd -r ${BITBUCKET_GROUP} && \ 67 | useradd -r -g ${BITBUCKET_GROUP} ${BITBUCKET_USER} && \ 68 | git lfs install --system && \ 69 | mkdir -p ${BITBUCKET_HOME} && \ 70 | chown -R ${BITBUCKET_USER}:${BITBUCKET_GROUP} ${BITBUCKET_INSTALL} ${BITBUCKET_HOME} ${AGENT_PATH} 71 | 72 | VOLUME ${BITBUCKET_HOME} 73 | USER ${BITBUCKET_USER} 74 | WORKDIR ${BITBUCKET_INSTALL} 75 | EXPOSE 7990 7999 76 | 77 | ENTRYPOINT ["/opt/bitbucket/bin/start-bitbucket.sh", "-fg"] --------------------------------------------------------------------------------