From 162fa4ca358954e20715ddb3c41089465b9232b4 Mon Sep 17 00:00:00 2001 From: stam Date: Wed, 15 Jan 2020 12:53:31 +0300 Subject: [PATCH 01/50] DOTNET_SDK_VERSION=3.1.101 and openssl dhparam replaced to symlink --- teamcity-agent/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/teamcity-agent/Dockerfile b/teamcity-agent/Dockerfile index ac578d7fb..5e06429dd 100644 --- a/teamcity-agent/Dockerfile +++ b/teamcity-agent/Dockerfile @@ -44,7 +44,7 @@ ENV DOTNET_CLI_TELEMETRY_OPTOUT=true \ NUGET_XMLDOC_MODE=skip \ GIT_SSH_VARIANT=ssh \ # Install .NET Core SDK - DOTNET_SDK_VERSION=3.1.100-preview3 \ + DOTNET_SDK_VERSION=3.1.101 \ #unofficial support of openssl1.1 instead of 1.0 [https://stackoverflow.com/questions/51901359] CLR_OPENSSL_VERSION_OVERRIDE=45 @@ -71,7 +71,7 @@ RUN apt-get update && \ zlib1g \ && rm -rf /var/lib/apt/lists/* && \ \ - curl -SL https://download.visualstudio.microsoft.com/download/pr/941853c3-98c6-44ff-b11f-3892e4f91814/14e8f22c7a1d95dd6fe9a53296d19073/dotnet-sdk-$DOTNET_SDK_VERSION-014645-linux-x64.tar.gz --output dotnet.tar.gz \ + curl -SL https://download.visualstudio.microsoft.com/download/pr/c4b503d6-2f41-4908-b634-270a0a1dcfca/c5a20e42868a48a2cd1ae27cf038044c/dotnet-sdk-$DOTNET_SDK_VERSION-linux-x64.tar.gz --output dotnet.tar.gz \ && mkdir -p /usr/share/dotnet \ && tar -zxf dotnet.tar.gz -C /usr/share/dotnet \ && rm dotnet.tar.gz \ @@ -186,7 +186,7 @@ RUN apt-get update && \ xmlwriter \ xsl \ yaml && \ - openssl dhparam -out /etc/php/dhparam.pem 4096 && \ + ln -sf /etc/ssl/dhparam.pem /etc/php/dhparam.pem && \ php -v ################################################################## From a52402908ac2a639a91186b9c0e9879353c1b589 Mon Sep 17 00:00:00 2001 From: stam Date: Wed, 15 Jan 2020 13:14:07 +0300 Subject: [PATCH 02/50] README updates --- atlassian/bitbucket/README.md | 4 ++++ atlassian/confluence/README.md | 3 +++ atlassian/jira/README.md | 3 +++ 3 files changed, 10 insertions(+) diff --git a/atlassian/bitbucket/README.md b/atlassian/bitbucket/README.md index 6cc24a20f..9e959e8e6 100644 --- a/atlassian/bitbucket/README.md +++ b/atlassian/bitbucket/README.md @@ -4,3 +4,7 @@ All presented images avalible on our repo in docker hub. ## LTS releases: * Bitbucket have no LTS releases + +------- + +*Some old versions of Bitbucket may fail health check with [AdoptOpenJDK](https://github.com/AdoptOpenJDK) (open source, prebuilt OpenJDK binaries). But it will be works.* \ No newline at end of file diff --git a/atlassian/confluence/README.md b/atlassian/confluence/README.md index f3caf36a4..309865c3f 100644 --- a/atlassian/confluence/README.md +++ b/atlassian/confluence/README.md @@ -6,3 +6,6 @@ All presented images avalible on our repo in docker hub. ## LTS releases: * Latest version of Confluence `6.13.4` +------- + +*Some old versions of Confluence may fail health check with [AdoptOpenJDK](https://github.com/AdoptOpenJDK) (open source, prebuilt OpenJDK binaries). But it will be works.* \ No newline at end of file diff --git a/atlassian/jira/README.md b/atlassian/jira/README.md index f4a011083..dc135cd42 100644 --- a/atlassian/jira/README.md +++ b/atlassian/jira/README.md @@ -9,3 +9,6 @@ All presented images avalible on our repo in docker hub. * Latest version of `Jira 7` branch is `7.13.3` * Older version of `Jira 7` branch is `7.6.17` +------- + +*Some old versions of Jira may fail health check with [AdoptOpenJDK](https://github.com/AdoptOpenJDK) (open source, prebuilt OpenJDK binaries). But it will be works.* \ No newline at end of file From cbd0cd40ce2fc2f2a44eee9ffd1a8e9b977a0a42 Mon Sep 17 00:00:00 2001 From: stam Date: Wed, 15 Jan 2020 13:22:13 +0300 Subject: [PATCH 03/50] jira 7.3 --- .travis.yml | 102 +++++++++---- CHANGELOG.md | 1 + atlassian/jira/7.3.0/.docker-repository.yml | 1 + atlassian/jira/7.3.0/.dockerignore | 3 + atlassian/jira/7.3.0/Dockerfile | 47 ++++++ atlassian/jira/7.3.0/Makefile | 4 + atlassian/jira/7.3.0/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.3.0/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.3.1/.docker-repository.yml | 1 + atlassian/jira/7.3.1/.dockerignore | 3 + atlassian/jira/7.3.1/Dockerfile | 47 ++++++ atlassian/jira/7.3.1/Makefile | 4 + atlassian/jira/7.3.1/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.3.1/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.3.2/.docker-repository.yml | 1 + atlassian/jira/7.3.2/.dockerignore | 3 + atlassian/jira/7.3.2/Dockerfile | 47 ++++++ atlassian/jira/7.3.2/Makefile | 4 + atlassian/jira/7.3.2/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.3.2/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.3.3/.docker-repository.yml | 1 + atlassian/jira/7.3.3/.dockerignore | 3 + atlassian/jira/7.3.3/Dockerfile | 47 ++++++ atlassian/jira/7.3.3/Makefile | 4 + atlassian/jira/7.3.3/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.3.3/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.3.4/.docker-repository.yml | 1 + atlassian/jira/7.3.4/.dockerignore | 3 + atlassian/jira/7.3.4/Dockerfile | 47 ++++++ atlassian/jira/7.3.4/Makefile | 4 + atlassian/jira/7.3.4/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.3.4/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.3.5/.docker-repository.yml | 1 + atlassian/jira/7.3.5/.dockerignore | 3 + atlassian/jira/7.3.5/Dockerfile | 47 ++++++ atlassian/jira/7.3.5/Makefile | 4 + atlassian/jira/7.3.5/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.3.5/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.3.6/.docker-repository.yml | 1 + atlassian/jira/7.3.6/.dockerignore | 3 + atlassian/jira/7.3.6/Dockerfile | 47 ++++++ atlassian/jira/7.3.6/Makefile | 4 + atlassian/jira/7.3.6/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.3.6/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.3.7/.docker-repository.yml | 1 + atlassian/jira/7.3.7/.dockerignore | 3 + atlassian/jira/7.3.7/Dockerfile | 47 ++++++ atlassian/jira/7.3.7/Makefile | 4 + atlassian/jira/7.3.7/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.3.7/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.3.8/.docker-repository.yml | 1 + atlassian/jira/7.3.8/.dockerignore | 3 + atlassian/jira/7.3.8/Dockerfile | 47 ++++++ atlassian/jira/7.3.8/Makefile | 4 + atlassian/jira/7.3.8/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.3.8/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.3.9/.docker-repository.yml | 1 + atlassian/jira/7.3.9/.dockerignore | 3 + atlassian/jira/7.3.9/Dockerfile | 47 ++++++ atlassian/jira/7.3.9/Makefile | 4 + atlassian/jira/7.3.9/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.3.9/entrypoint.sh | 89 ++++++++++++ 62 files changed, 3029 insertions(+), 24 deletions(-) create mode 100644 atlassian/jira/7.3.0/.docker-repository.yml create mode 100644 atlassian/jira/7.3.0/.dockerignore create mode 100644 atlassian/jira/7.3.0/Dockerfile create mode 100644 atlassian/jira/7.3.0/Makefile create mode 100644 atlassian/jira/7.3.0/README.md create mode 100644 atlassian/jira/7.3.0/entrypoint.sh create mode 100644 atlassian/jira/7.3.1/.docker-repository.yml create mode 100644 atlassian/jira/7.3.1/.dockerignore create mode 100644 atlassian/jira/7.3.1/Dockerfile create mode 100644 atlassian/jira/7.3.1/Makefile create mode 100644 atlassian/jira/7.3.1/README.md create mode 100644 atlassian/jira/7.3.1/entrypoint.sh create mode 100644 atlassian/jira/7.3.2/.docker-repository.yml create mode 100644 atlassian/jira/7.3.2/.dockerignore create mode 100644 atlassian/jira/7.3.2/Dockerfile create mode 100644 atlassian/jira/7.3.2/Makefile create mode 100644 atlassian/jira/7.3.2/README.md create mode 100644 atlassian/jira/7.3.2/entrypoint.sh create mode 100644 atlassian/jira/7.3.3/.docker-repository.yml create mode 100644 atlassian/jira/7.3.3/.dockerignore create mode 100644 atlassian/jira/7.3.3/Dockerfile create mode 100644 atlassian/jira/7.3.3/Makefile create mode 100644 atlassian/jira/7.3.3/README.md create mode 100644 atlassian/jira/7.3.3/entrypoint.sh create mode 100644 atlassian/jira/7.3.4/.docker-repository.yml create mode 100644 atlassian/jira/7.3.4/.dockerignore create mode 100644 atlassian/jira/7.3.4/Dockerfile create mode 100644 atlassian/jira/7.3.4/Makefile create mode 100644 atlassian/jira/7.3.4/README.md create mode 100644 atlassian/jira/7.3.4/entrypoint.sh create mode 100644 atlassian/jira/7.3.5/.docker-repository.yml create mode 100644 atlassian/jira/7.3.5/.dockerignore create mode 100644 atlassian/jira/7.3.5/Dockerfile create mode 100644 atlassian/jira/7.3.5/Makefile create mode 100644 atlassian/jira/7.3.5/README.md create mode 100644 atlassian/jira/7.3.5/entrypoint.sh create mode 100644 atlassian/jira/7.3.6/.docker-repository.yml create mode 100644 atlassian/jira/7.3.6/.dockerignore create mode 100644 atlassian/jira/7.3.6/Dockerfile create mode 100644 atlassian/jira/7.3.6/Makefile create mode 100644 atlassian/jira/7.3.6/README.md create mode 100644 atlassian/jira/7.3.6/entrypoint.sh create mode 100644 atlassian/jira/7.3.7/.docker-repository.yml create mode 100644 atlassian/jira/7.3.7/.dockerignore create mode 100644 atlassian/jira/7.3.7/Dockerfile create mode 100644 atlassian/jira/7.3.7/Makefile create mode 100644 atlassian/jira/7.3.7/README.md create mode 100644 atlassian/jira/7.3.7/entrypoint.sh create mode 100644 atlassian/jira/7.3.8/.docker-repository.yml create mode 100644 atlassian/jira/7.3.8/.dockerignore create mode 100644 atlassian/jira/7.3.8/Dockerfile create mode 100644 atlassian/jira/7.3.8/Makefile create mode 100644 atlassian/jira/7.3.8/README.md create mode 100644 atlassian/jira/7.3.8/entrypoint.sh create mode 100644 atlassian/jira/7.3.9/.docker-repository.yml create mode 100644 atlassian/jira/7.3.9/.dockerignore create mode 100644 atlassian/jira/7.3.9/Dockerfile create mode 100644 atlassian/jira/7.3.9/Makefile create mode 100644 atlassian/jira/7.3.9/README.md create mode 100644 atlassian/jira/7.3.9/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index b465a6ae9..2248397ca 100644 --- a/.travis.yml +++ b/.travis.yml @@ -135,19 +135,13 @@ matrix: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:latest atlassian/jira/latest - docker push epicmorg/jira:latest - - - name: Jira 7.10.0 + + - name: qBitTorrent - latest script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - - docker build --compress -t epicmorg/jira:7.10.0 atlassian/jira/7.10.0 - - docker push epicmorg/jira:7.10.0 - - - name: Confluence 6.9.0 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - - docker build --compress -t epicmorg/confluence:6.9.0 atlassian/confluence/6.9.0 - - docker push epicmorg/confluence:6.9.0 - + - docker build --compress -t epicmorg/qbittorrent:latest qbittorrent/latest + - docker push epicmorg/qbittorrent:latest + ######################################### #### Our LTS images ######################################### @@ -278,6 +272,13 @@ matrix: ######################################### #### Our Confluence images ######################################### + + - name: Confluence 6.9.0 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.9.0 atlassian/confluence/6.9.0 + - docker push epicmorg/confluence:6.9.0 + - name: Confluence 6.9.1 script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin @@ -691,12 +692,71 @@ matrix: ########## -# moved to hipriority section -# - name: Jira 7.10.0 -# script: -# - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin -# - docker build --compress -t epicmorg/jira:7.10.0 atlassian/jira/7.10.0 -# - docker push epicmorg/jira:7.10.0 + - name: Jira 7.3.0 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.3.0 atlassian/jira/7.3.0 + - docker push epicmorg/jira:7.3.0 + + - name: Jira 7.3.1 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.3.1 atlassian/jira/7.3.1 + - docker push epicmorg/jira:7.3.1 + + - name: Jira 7.3.2 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.3.2 atlassian/jira/7.3.2 + - docker push epicmorg/jira:7.3.2 + + - name: Jira 7.3.3 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.3.3 atlassian/jira/7.3.3 + - docker push epicmorg/jira:7.3.3 + + - name: Jira 7.3.4 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.3.4 atlassian/jira/7.3.4 + - docker push epicmorg/jira:7.3.4 + + - name: Jira 7.3.5 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.3.5 atlassian/jira/7.3.5 + - docker push epicmorg/jira:7.3.5 + + - name: Jira 7.3.6 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.3.6 atlassian/jira/7.3.6 + - docker push epicmorg/jira:7.3.6 + + - name: Jira 7.3.7 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.3.7 atlassian/jira/7.3.7 + - docker push epicmorg/jira:7.3.7 + + - name: Jira 7.3.8 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.3.8 atlassian/jira/7.3.8 + - docker push epicmorg/jira:7.3.8 + + - name: Jira 7.3.9 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.3.9 atlassian/jira/7.3.9 + - docker push epicmorg/jira:7.3.9 + + - name: Jira 7.10.0 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.10.0 atlassian/jira/7.10.0 + - docker push epicmorg/jira:7.10.0 - name: Jira 7.10.1 script: @@ -1007,13 +1067,7 @@ matrix: # - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin # - docker build --compress -t epicmorg/staytus:latest staytus # - docker push epicmorg/staytus:latest - - - name: qBitTorrent - latest - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - - docker build --compress -t epicmorg/qbittorrent:latest qbittorrent/latest - - docker push epicmorg/qbittorrent:latest - + - name: qBitTorrent - unstable script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin diff --git a/CHANGELOG.md b/CHANGELOG.md index e2846b88d..c32fac22d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ * added `Jira 7.0.x`: `7.0.0`, `7.0.2`, `7.0.5`, `7.0.10`, `7.0.11` * added `Jira 7.1.x`: `7.1.0`, `7.1.1`, `7.1.2`, `7.1.4`, `7.1.6`, `7.1.7`, `7.1.8`, `7.1.9`, `7.1.10` * added `Jira 7.2.x`: `7.2.0`, `7.2.1`, `7.2.2`, `7.2.3`, `7.2.4`, `7.2.6`, `7.2.7`, `7.2.8`, `7.2.9`, `7.2.10`, `7.2.11`, `7.2.12`, `7.2.13`, `7.2.14`, `7.2.15` + * added `Jira 7.3.x`: `7.3.0`, `7.3.1`, `7.3.2`, `7.3.3`, `7.3.4`, `7.3.5`, `7.3.6`, `7.3.7`, `7.3.8`, `7. 3.9` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/jira/7.3.0/.docker-repository.yml b/atlassian/jira/7.3.0/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.3.0/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.3.0/.dockerignore b/atlassian/jira/7.3.0/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.3.0/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.3.0/Dockerfile b/atlassian/jira/7.3.0/Dockerfile new file mode 100644 index 000000000..75be7bce6 --- /dev/null +++ b/atlassian/jira/7.3.0/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.3.0 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.3.0/Makefile b/atlassian/jira/7.3.0/Makefile new file mode 100644 index 000000000..b744b32be --- /dev/null +++ b/atlassian/jira/7.3.0/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.3.0 . diff --git a/atlassian/jira/7.3.0/README.md b/atlassian/jira/7.3.0/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.3.0/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.3.0/entrypoint.sh b/atlassian/jira/7.3.0/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.3.0/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.3.1/.docker-repository.yml b/atlassian/jira/7.3.1/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.3.1/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.3.1/.dockerignore b/atlassian/jira/7.3.1/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.3.1/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.3.1/Dockerfile b/atlassian/jira/7.3.1/Dockerfile new file mode 100644 index 000000000..85f4595c1 --- /dev/null +++ b/atlassian/jira/7.3.1/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.3.1 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.3.1/Makefile b/atlassian/jira/7.3.1/Makefile new file mode 100644 index 000000000..e6ca9757f --- /dev/null +++ b/atlassian/jira/7.3.1/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.3.1 . diff --git a/atlassian/jira/7.3.1/README.md b/atlassian/jira/7.3.1/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.3.1/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.3.1/entrypoint.sh b/atlassian/jira/7.3.1/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.3.1/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.3.2/.docker-repository.yml b/atlassian/jira/7.3.2/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.3.2/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.3.2/.dockerignore b/atlassian/jira/7.3.2/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.3.2/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.3.2/Dockerfile b/atlassian/jira/7.3.2/Dockerfile new file mode 100644 index 000000000..ee39f3bfa --- /dev/null +++ b/atlassian/jira/7.3.2/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.3.2 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.3.2/Makefile b/atlassian/jira/7.3.2/Makefile new file mode 100644 index 000000000..f19a88679 --- /dev/null +++ b/atlassian/jira/7.3.2/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.3.2 . diff --git a/atlassian/jira/7.3.2/README.md b/atlassian/jira/7.3.2/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.3.2/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.3.2/entrypoint.sh b/atlassian/jira/7.3.2/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.3.2/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.3.3/.docker-repository.yml b/atlassian/jira/7.3.3/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.3.3/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.3.3/.dockerignore b/atlassian/jira/7.3.3/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.3.3/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.3.3/Dockerfile b/atlassian/jira/7.3.3/Dockerfile new file mode 100644 index 000000000..193a929ba --- /dev/null +++ b/atlassian/jira/7.3.3/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.3.3 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.3.3/Makefile b/atlassian/jira/7.3.3/Makefile new file mode 100644 index 000000000..5656105a5 --- /dev/null +++ b/atlassian/jira/7.3.3/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.3.3 . diff --git a/atlassian/jira/7.3.3/README.md b/atlassian/jira/7.3.3/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.3.3/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.3.3/entrypoint.sh b/atlassian/jira/7.3.3/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.3.3/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.3.4/.docker-repository.yml b/atlassian/jira/7.3.4/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.3.4/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.3.4/.dockerignore b/atlassian/jira/7.3.4/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.3.4/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.3.4/Dockerfile b/atlassian/jira/7.3.4/Dockerfile new file mode 100644 index 000000000..268661f8f --- /dev/null +++ b/atlassian/jira/7.3.4/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.3.4 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.3.4/Makefile b/atlassian/jira/7.3.4/Makefile new file mode 100644 index 000000000..45256309c --- /dev/null +++ b/atlassian/jira/7.3.4/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.3.4 . diff --git a/atlassian/jira/7.3.4/README.md b/atlassian/jira/7.3.4/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.3.4/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.3.4/entrypoint.sh b/atlassian/jira/7.3.4/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.3.4/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.3.5/.docker-repository.yml b/atlassian/jira/7.3.5/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.3.5/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.3.5/.dockerignore b/atlassian/jira/7.3.5/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.3.5/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.3.5/Dockerfile b/atlassian/jira/7.3.5/Dockerfile new file mode 100644 index 000000000..dcbabee74 --- /dev/null +++ b/atlassian/jira/7.3.5/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.3.5 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.3.5/Makefile b/atlassian/jira/7.3.5/Makefile new file mode 100644 index 000000000..dcea2c3b0 --- /dev/null +++ b/atlassian/jira/7.3.5/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.3.5 . diff --git a/atlassian/jira/7.3.5/README.md b/atlassian/jira/7.3.5/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.3.5/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.3.5/entrypoint.sh b/atlassian/jira/7.3.5/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.3.5/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.3.6/.docker-repository.yml b/atlassian/jira/7.3.6/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.3.6/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.3.6/.dockerignore b/atlassian/jira/7.3.6/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.3.6/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.3.6/Dockerfile b/atlassian/jira/7.3.6/Dockerfile new file mode 100644 index 000000000..188f6857d --- /dev/null +++ b/atlassian/jira/7.3.6/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.3.6 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.3.6/Makefile b/atlassian/jira/7.3.6/Makefile new file mode 100644 index 000000000..7a99ba206 --- /dev/null +++ b/atlassian/jira/7.3.6/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.3.6 . diff --git a/atlassian/jira/7.3.6/README.md b/atlassian/jira/7.3.6/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.3.6/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.3.6/entrypoint.sh b/atlassian/jira/7.3.6/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.3.6/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.3.7/.docker-repository.yml b/atlassian/jira/7.3.7/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.3.7/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.3.7/.dockerignore b/atlassian/jira/7.3.7/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.3.7/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.3.7/Dockerfile b/atlassian/jira/7.3.7/Dockerfile new file mode 100644 index 000000000..f274ac5c1 --- /dev/null +++ b/atlassian/jira/7.3.7/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.3.7 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.3.7/Makefile b/atlassian/jira/7.3.7/Makefile new file mode 100644 index 000000000..7791706ad --- /dev/null +++ b/atlassian/jira/7.3.7/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.3.7 . diff --git a/atlassian/jira/7.3.7/README.md b/atlassian/jira/7.3.7/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.3.7/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.3.7/entrypoint.sh b/atlassian/jira/7.3.7/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.3.7/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.3.8/.docker-repository.yml b/atlassian/jira/7.3.8/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.3.8/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.3.8/.dockerignore b/atlassian/jira/7.3.8/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.3.8/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.3.8/Dockerfile b/atlassian/jira/7.3.8/Dockerfile new file mode 100644 index 000000000..fcb483846 --- /dev/null +++ b/atlassian/jira/7.3.8/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.3.8 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.3.8/Makefile b/atlassian/jira/7.3.8/Makefile new file mode 100644 index 000000000..1efa30532 --- /dev/null +++ b/atlassian/jira/7.3.8/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.3.8 . diff --git a/atlassian/jira/7.3.8/README.md b/atlassian/jira/7.3.8/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.3.8/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.3.8/entrypoint.sh b/atlassian/jira/7.3.8/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.3.8/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.3.9/.docker-repository.yml b/atlassian/jira/7.3.9/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.3.9/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.3.9/.dockerignore b/atlassian/jira/7.3.9/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.3.9/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.3.9/Dockerfile b/atlassian/jira/7.3.9/Dockerfile new file mode 100644 index 000000000..1d85b041b --- /dev/null +++ b/atlassian/jira/7.3.9/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.3.9 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.3.9/Makefile b/atlassian/jira/7.3.9/Makefile new file mode 100644 index 000000000..90583bc03 --- /dev/null +++ b/atlassian/jira/7.3.9/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.3.9 . diff --git a/atlassian/jira/7.3.9/README.md b/atlassian/jira/7.3.9/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.3.9/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.3.9/entrypoint.sh b/atlassian/jira/7.3.9/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.3.9/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi From d0061cf3456cf8f975570d290348d47d09099c9c Mon Sep 17 00:00:00 2001 From: stam Date: Wed, 15 Jan 2020 13:23:41 +0300 Subject: [PATCH 04/50] jira 7.13.11 --- .travis.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.travis.yml b/.travis.yml index 2248397ca..eaaa56958 100644 --- a/.travis.yml +++ b/.travis.yml @@ -865,6 +865,12 @@ matrix: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:7.13.9 atlassian/jira/7.13.9 - docker push epicmorg/jira:7.13.9 + + - name: Jira 7.13.11 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.13.11 atlassian/jira/7.13.11 + - docker push epicmorg/jira:7.13.11 - name: Jira 8.0.0 script: @@ -872,6 +878,7 @@ matrix: - docker build --compress -t epicmorg/jira:8.0.0 atlassian/jira/8.0.0 - docker push epicmorg/jira:8.0.0 +# removed by atlassian # - name: Jira 8.0.1 # script: # - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin From a3a465bddb3bb547be23b28cb7d230c6ce32cd17 Mon Sep 17 00:00:00 2001 From: stam Date: Wed, 15 Jan 2020 13:30:17 +0300 Subject: [PATCH 05/50] jira 7.4 --- .travis.yml | 47 ++++++ CHANGELOG.md | 1 + atlassian/jira/7.4.0/.docker-repository.yml | 1 + atlassian/jira/7.4.0/.dockerignore | 3 + atlassian/jira/7.4.0/Dockerfile | 47 ++++++ atlassian/jira/7.4.0/Makefile | 4 + atlassian/jira/7.4.0/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.4.0/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.4.1/.docker-repository.yml | 1 + atlassian/jira/7.4.1/.dockerignore | 3 + atlassian/jira/7.4.1/Dockerfile | 47 ++++++ atlassian/jira/7.4.1/Makefile | 4 + atlassian/jira/7.4.1/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.4.1/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.4.2/.docker-repository.yml | 1 + atlassian/jira/7.4.2/.dockerignore | 3 + atlassian/jira/7.4.2/Dockerfile | 47 ++++++ atlassian/jira/7.4.2/Makefile | 4 + atlassian/jira/7.4.2/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.4.2/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.4.3/.docker-repository.yml | 1 + atlassian/jira/7.4.3/.dockerignore | 3 + atlassian/jira/7.4.3/Dockerfile | 47 ++++++ atlassian/jira/7.4.3/Makefile | 4 + atlassian/jira/7.4.3/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.4.3/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.4.4/.docker-repository.yml | 1 + atlassian/jira/7.4.4/.dockerignore | 3 + atlassian/jira/7.4.4/Dockerfile | 47 ++++++ atlassian/jira/7.4.4/Makefile | 4 + atlassian/jira/7.4.4/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.4.4/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.4.5/.docker-repository.yml | 1 + atlassian/jira/7.4.5/.dockerignore | 3 + atlassian/jira/7.4.5/Dockerfile | 47 ++++++ atlassian/jira/7.4.5/Makefile | 4 + atlassian/jira/7.4.5/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.4.5/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.4.6/.docker-repository.yml | 1 + atlassian/jira/7.4.6/.dockerignore | 3 + atlassian/jira/7.4.6/Dockerfile | 47 ++++++ atlassian/jira/7.4.6/Makefile | 4 + atlassian/jira/7.4.6/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.4.6/entrypoint.sh | 89 ++++++++++++ 44 files changed, 2113 insertions(+) create mode 100644 atlassian/jira/7.4.0/.docker-repository.yml create mode 100644 atlassian/jira/7.4.0/.dockerignore create mode 100644 atlassian/jira/7.4.0/Dockerfile create mode 100644 atlassian/jira/7.4.0/Makefile create mode 100644 atlassian/jira/7.4.0/README.md create mode 100644 atlassian/jira/7.4.0/entrypoint.sh create mode 100644 atlassian/jira/7.4.1/.docker-repository.yml create mode 100644 atlassian/jira/7.4.1/.dockerignore create mode 100644 atlassian/jira/7.4.1/Dockerfile create mode 100644 atlassian/jira/7.4.1/Makefile create mode 100644 atlassian/jira/7.4.1/README.md create mode 100644 atlassian/jira/7.4.1/entrypoint.sh create mode 100644 atlassian/jira/7.4.2/.docker-repository.yml create mode 100644 atlassian/jira/7.4.2/.dockerignore create mode 100644 atlassian/jira/7.4.2/Dockerfile create mode 100644 atlassian/jira/7.4.2/Makefile create mode 100644 atlassian/jira/7.4.2/README.md create mode 100644 atlassian/jira/7.4.2/entrypoint.sh create mode 100644 atlassian/jira/7.4.3/.docker-repository.yml create mode 100644 atlassian/jira/7.4.3/.dockerignore create mode 100644 atlassian/jira/7.4.3/Dockerfile create mode 100644 atlassian/jira/7.4.3/Makefile create mode 100644 atlassian/jira/7.4.3/README.md create mode 100644 atlassian/jira/7.4.3/entrypoint.sh create mode 100644 atlassian/jira/7.4.4/.docker-repository.yml create mode 100644 atlassian/jira/7.4.4/.dockerignore create mode 100644 atlassian/jira/7.4.4/Dockerfile create mode 100644 atlassian/jira/7.4.4/Makefile create mode 100644 atlassian/jira/7.4.4/README.md create mode 100644 atlassian/jira/7.4.4/entrypoint.sh create mode 100644 atlassian/jira/7.4.5/.docker-repository.yml create mode 100644 atlassian/jira/7.4.5/.dockerignore create mode 100644 atlassian/jira/7.4.5/Dockerfile create mode 100644 atlassian/jira/7.4.5/Makefile create mode 100644 atlassian/jira/7.4.5/README.md create mode 100644 atlassian/jira/7.4.5/entrypoint.sh create mode 100644 atlassian/jira/7.4.6/.docker-repository.yml create mode 100644 atlassian/jira/7.4.6/.dockerignore create mode 100644 atlassian/jira/7.4.6/Dockerfile create mode 100644 atlassian/jira/7.4.6/Makefile create mode 100644 atlassian/jira/7.4.6/README.md create mode 100644 atlassian/jira/7.4.6/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index eaaa56958..5f9223822 100644 --- a/.travis.yml +++ b/.travis.yml @@ -752,6 +752,52 @@ matrix: - docker build --compress -t epicmorg/jira:7.3.9 atlassian/jira/7.3.9 - docker push epicmorg/jira:7.3.9 +########## + + - name: Jira 7.4.0 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.4.0 atlassian/jira/7.4.0 + - docker push epicmorg/jira:7.4.0 + + - name: Jira 7.4.1 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.4.1 atlassian/jira/7.4.1 + - docker push epicmorg/jira:7.4.1 + + - name: Jira 7.4.2 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.4.2 atlassian/jira/7.4.2 + - docker push epicmorg/jira:7.4.2 + + - name: Jira 7.4.3 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.4.3 atlassian/jira/7.4.3 + - docker push epicmorg/jira:7.4.3 + + - name: Jira 7.4.4 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.4.4 atlassian/jira/7.4.4 + - docker push epicmorg/jira:7.4.4 + + - name: Jira 7.4.5 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.4.5 atlassian/jira/7.4.5 + - docker push epicmorg/jira:7.4.5 + + - name: Jira 7.4.6 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.4.6 atlassian/jira/7.4.6 + - docker push epicmorg/jira:7.4.6 + +########## + - name: Jira 7.10.0 script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin @@ -800,6 +846,7 @@ matrix: - docker build --compress -t epicmorg/jira:7.12.1 atlassian/jira/7.12.1 - docker push epicmorg/jira:7.12.1 +# removed by atlassian # - name: Jira 7.12.2 # script: # - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin diff --git a/CHANGELOG.md b/CHANGELOG.md index c32fac22d..10e6e81a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ * added `Jira 7.1.x`: `7.1.0`, `7.1.1`, `7.1.2`, `7.1.4`, `7.1.6`, `7.1.7`, `7.1.8`, `7.1.9`, `7.1.10` * added `Jira 7.2.x`: `7.2.0`, `7.2.1`, `7.2.2`, `7.2.3`, `7.2.4`, `7.2.6`, `7.2.7`, `7.2.8`, `7.2.9`, `7.2.10`, `7.2.11`, `7.2.12`, `7.2.13`, `7.2.14`, `7.2.15` * added `Jira 7.3.x`: `7.3.0`, `7.3.1`, `7.3.2`, `7.3.3`, `7.3.4`, `7.3.5`, `7.3.6`, `7.3.7`, `7.3.8`, `7. 3.9` + * added `Jira 7.4.x`: `7.4.0`, `7.4.1`, `7.4.2`, `7.4.3`, `7.4.4`, `7.4.5`, `7.4.6` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/jira/7.4.0/.docker-repository.yml b/atlassian/jira/7.4.0/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.4.0/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.4.0/.dockerignore b/atlassian/jira/7.4.0/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.4.0/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.4.0/Dockerfile b/atlassian/jira/7.4.0/Dockerfile new file mode 100644 index 000000000..1d5527ad5 --- /dev/null +++ b/atlassian/jira/7.4.0/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.4.0 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.4.0/Makefile b/atlassian/jira/7.4.0/Makefile new file mode 100644 index 000000000..52e9ac418 --- /dev/null +++ b/atlassian/jira/7.4.0/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.4.0 . diff --git a/atlassian/jira/7.4.0/README.md b/atlassian/jira/7.4.0/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.4.0/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.4.0/entrypoint.sh b/atlassian/jira/7.4.0/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.4.0/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.4.1/.docker-repository.yml b/atlassian/jira/7.4.1/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.4.1/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.4.1/.dockerignore b/atlassian/jira/7.4.1/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.4.1/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.4.1/Dockerfile b/atlassian/jira/7.4.1/Dockerfile new file mode 100644 index 000000000..6f74d409b --- /dev/null +++ b/atlassian/jira/7.4.1/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.4.1 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.4.1/Makefile b/atlassian/jira/7.4.1/Makefile new file mode 100644 index 000000000..c7c83da76 --- /dev/null +++ b/atlassian/jira/7.4.1/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.4.1 . diff --git a/atlassian/jira/7.4.1/README.md b/atlassian/jira/7.4.1/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.4.1/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.4.1/entrypoint.sh b/atlassian/jira/7.4.1/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.4.1/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.4.2/.docker-repository.yml b/atlassian/jira/7.4.2/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.4.2/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.4.2/.dockerignore b/atlassian/jira/7.4.2/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.4.2/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.4.2/Dockerfile b/atlassian/jira/7.4.2/Dockerfile new file mode 100644 index 000000000..5aba5380a --- /dev/null +++ b/atlassian/jira/7.4.2/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.4.2 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.4.2/Makefile b/atlassian/jira/7.4.2/Makefile new file mode 100644 index 000000000..4fdc41139 --- /dev/null +++ b/atlassian/jira/7.4.2/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.4.2 . diff --git a/atlassian/jira/7.4.2/README.md b/atlassian/jira/7.4.2/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.4.2/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.4.2/entrypoint.sh b/atlassian/jira/7.4.2/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.4.2/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.4.3/.docker-repository.yml b/atlassian/jira/7.4.3/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.4.3/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.4.3/.dockerignore b/atlassian/jira/7.4.3/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.4.3/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.4.3/Dockerfile b/atlassian/jira/7.4.3/Dockerfile new file mode 100644 index 000000000..20063c3f2 --- /dev/null +++ b/atlassian/jira/7.4.3/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.4.3 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.4.3/Makefile b/atlassian/jira/7.4.3/Makefile new file mode 100644 index 000000000..009baca7e --- /dev/null +++ b/atlassian/jira/7.4.3/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.4.3 . diff --git a/atlassian/jira/7.4.3/README.md b/atlassian/jira/7.4.3/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.4.3/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.4.3/entrypoint.sh b/atlassian/jira/7.4.3/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.4.3/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.4.4/.docker-repository.yml b/atlassian/jira/7.4.4/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.4.4/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.4.4/.dockerignore b/atlassian/jira/7.4.4/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.4.4/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.4.4/Dockerfile b/atlassian/jira/7.4.4/Dockerfile new file mode 100644 index 000000000..8980155df --- /dev/null +++ b/atlassian/jira/7.4.4/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.4.4 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.4.4/Makefile b/atlassian/jira/7.4.4/Makefile new file mode 100644 index 000000000..4628d54ba --- /dev/null +++ b/atlassian/jira/7.4.4/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.4.4 . diff --git a/atlassian/jira/7.4.4/README.md b/atlassian/jira/7.4.4/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.4.4/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.4.4/entrypoint.sh b/atlassian/jira/7.4.4/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.4.4/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.4.5/.docker-repository.yml b/atlassian/jira/7.4.5/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.4.5/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.4.5/.dockerignore b/atlassian/jira/7.4.5/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.4.5/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.4.5/Dockerfile b/atlassian/jira/7.4.5/Dockerfile new file mode 100644 index 000000000..8431bda78 --- /dev/null +++ b/atlassian/jira/7.4.5/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.4.5 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.4.5/Makefile b/atlassian/jira/7.4.5/Makefile new file mode 100644 index 000000000..99d248d42 --- /dev/null +++ b/atlassian/jira/7.4.5/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.4.5 . diff --git a/atlassian/jira/7.4.5/README.md b/atlassian/jira/7.4.5/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.4.5/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.4.5/entrypoint.sh b/atlassian/jira/7.4.5/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.4.5/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.4.6/.docker-repository.yml b/atlassian/jira/7.4.6/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.4.6/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.4.6/.dockerignore b/atlassian/jira/7.4.6/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.4.6/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.4.6/Dockerfile b/atlassian/jira/7.4.6/Dockerfile new file mode 100644 index 000000000..d4691ceab --- /dev/null +++ b/atlassian/jira/7.4.6/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.4.6 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.4.6/Makefile b/atlassian/jira/7.4.6/Makefile new file mode 100644 index 000000000..7dd540b9b --- /dev/null +++ b/atlassian/jira/7.4.6/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.4.6 . diff --git a/atlassian/jira/7.4.6/README.md b/atlassian/jira/7.4.6/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.4.6/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.4.6/entrypoint.sh b/atlassian/jira/7.4.6/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.4.6/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi From cf1b4cc2c9701326d7361eaa0ab9ee9140c4fe52 Mon Sep 17 00:00:00 2001 From: stam Date: Wed, 15 Jan 2020 13:32:34 +0300 Subject: [PATCH 06/50] travis fix --- .travis.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5f9223822..46fac0a15 100644 --- a/.travis.yml +++ b/.travis.yml @@ -912,12 +912,6 @@ matrix: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:7.13.9 atlassian/jira/7.13.9 - docker push epicmorg/jira:7.13.9 - - - name: Jira 7.13.11 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - - docker build --compress -t epicmorg/jira:7.13.11 atlassian/jira/7.13.11 - - docker push epicmorg/jira:7.13.11 - name: Jira 8.0.0 script: From a36851d75646a55be24df8090c64c64f8bd4d45c Mon Sep 17 00:00:00 2001 From: stam Date: Wed, 15 Jan 2020 13:41:56 +0300 Subject: [PATCH 07/50] jira 7.5 --- .travis.yml | 32 +++++ CHANGELOG.md | 1 + atlassian/jira/7.5.0/.docker-repository.yml | 1 + atlassian/jira/7.5.0/.dockerignore | 3 + atlassian/jira/7.5.0/Dockerfile | 47 ++++++ atlassian/jira/7.5.0/Makefile | 4 + atlassian/jira/7.5.0/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.5.0/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.5.1/.docker-repository.yml | 1 + atlassian/jira/7.5.1/.dockerignore | 3 + atlassian/jira/7.5.1/Dockerfile | 47 ++++++ atlassian/jira/7.5.1/Makefile | 4 + atlassian/jira/7.5.1/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.5.1/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.5.2/.docker-repository.yml | 1 + atlassian/jira/7.5.2/.dockerignore | 3 + atlassian/jira/7.5.2/Dockerfile | 47 ++++++ atlassian/jira/7.5.2/Makefile | 4 + atlassian/jira/7.5.2/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.5.2/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.5.3/.docker-repository.yml | 1 + atlassian/jira/7.5.3/.dockerignore | 3 + atlassian/jira/7.5.3/Dockerfile | 47 ++++++ atlassian/jira/7.5.3/Makefile | 4 + atlassian/jira/7.5.3/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.5.3/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.5.4/.docker-repository.yml | 1 + atlassian/jira/7.5.4/.dockerignore | 3 + atlassian/jira/7.5.4/Dockerfile | 47 ++++++ atlassian/jira/7.5.4/Makefile | 4 + atlassian/jira/7.5.4/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.5.4/entrypoint.sh | 89 ++++++++++++ 32 files changed, 1508 insertions(+) create mode 100644 atlassian/jira/7.5.0/.docker-repository.yml create mode 100644 atlassian/jira/7.5.0/.dockerignore create mode 100644 atlassian/jira/7.5.0/Dockerfile create mode 100644 atlassian/jira/7.5.0/Makefile create mode 100644 atlassian/jira/7.5.0/README.md create mode 100644 atlassian/jira/7.5.0/entrypoint.sh create mode 100644 atlassian/jira/7.5.1/.docker-repository.yml create mode 100644 atlassian/jira/7.5.1/.dockerignore create mode 100644 atlassian/jira/7.5.1/Dockerfile create mode 100644 atlassian/jira/7.5.1/Makefile create mode 100644 atlassian/jira/7.5.1/README.md create mode 100644 atlassian/jira/7.5.1/entrypoint.sh create mode 100644 atlassian/jira/7.5.2/.docker-repository.yml create mode 100644 atlassian/jira/7.5.2/.dockerignore create mode 100644 atlassian/jira/7.5.2/Dockerfile create mode 100644 atlassian/jira/7.5.2/Makefile create mode 100644 atlassian/jira/7.5.2/README.md create mode 100644 atlassian/jira/7.5.2/entrypoint.sh create mode 100644 atlassian/jira/7.5.3/.docker-repository.yml create mode 100644 atlassian/jira/7.5.3/.dockerignore create mode 100644 atlassian/jira/7.5.3/Dockerfile create mode 100644 atlassian/jira/7.5.3/Makefile create mode 100644 atlassian/jira/7.5.3/README.md create mode 100644 atlassian/jira/7.5.3/entrypoint.sh create mode 100644 atlassian/jira/7.5.4/.docker-repository.yml create mode 100644 atlassian/jira/7.5.4/.dockerignore create mode 100644 atlassian/jira/7.5.4/Dockerfile create mode 100644 atlassian/jira/7.5.4/Makefile create mode 100644 atlassian/jira/7.5.4/README.md create mode 100644 atlassian/jira/7.5.4/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index 46fac0a15..3753b9ba9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -796,6 +796,38 @@ matrix: - docker build --compress -t epicmorg/jira:7.4.6 atlassian/jira/7.4.6 - docker push epicmorg/jira:7.4.6 +########## + + - name: Jira 7.5.0 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.5.0 atlassian/jira/7.5.0 + - docker push epicmorg/jira:7.5.0 + + - name: Jira 7.5.1 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.5.1 atlassian/jira/7.5.1 + - docker push epicmorg/jira:7.5.1 + + - name: Jira 7.5.2 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.5.2 atlassian/jira/7.5.2 + - docker push epicmorg/jira:7.5.2 + + - name: Jira 7.5.3 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.5.3 atlassian/jira/7.5.3 + - docker push epicmorg/jira:7.5.3 + + - name: Jira 7.5.4 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.5.4 atlassian/jira/7.5.4 + - docker push epicmorg/jira:7.5.4 + ########## - name: Jira 7.10.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index 10e6e81a0..571872851 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ * added `Jira 7.2.x`: `7.2.0`, `7.2.1`, `7.2.2`, `7.2.3`, `7.2.4`, `7.2.6`, `7.2.7`, `7.2.8`, `7.2.9`, `7.2.10`, `7.2.11`, `7.2.12`, `7.2.13`, `7.2.14`, `7.2.15` * added `Jira 7.3.x`: `7.3.0`, `7.3.1`, `7.3.2`, `7.3.3`, `7.3.4`, `7.3.5`, `7.3.6`, `7.3.7`, `7.3.8`, `7. 3.9` * added `Jira 7.4.x`: `7.4.0`, `7.4.1`, `7.4.2`, `7.4.3`, `7.4.4`, `7.4.5`, `7.4.6` + * added `Jira 7.5.x`: `7.5.0`, `7.5.1`, `7.5.2`, `7.5.3`, `7.5.4` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/jira/7.5.0/.docker-repository.yml b/atlassian/jira/7.5.0/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.5.0/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.5.0/.dockerignore b/atlassian/jira/7.5.0/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.5.0/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.5.0/Dockerfile b/atlassian/jira/7.5.0/Dockerfile new file mode 100644 index 000000000..5bb1823dd --- /dev/null +++ b/atlassian/jira/7.5.0/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.5.0 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.5.0/Makefile b/atlassian/jira/7.5.0/Makefile new file mode 100644 index 000000000..79ae30952 --- /dev/null +++ b/atlassian/jira/7.5.0/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.5.0 . diff --git a/atlassian/jira/7.5.0/README.md b/atlassian/jira/7.5.0/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.5.0/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.5.0/entrypoint.sh b/atlassian/jira/7.5.0/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.5.0/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.5.1/.docker-repository.yml b/atlassian/jira/7.5.1/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.5.1/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.5.1/.dockerignore b/atlassian/jira/7.5.1/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.5.1/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.5.1/Dockerfile b/atlassian/jira/7.5.1/Dockerfile new file mode 100644 index 000000000..c6d46d9de --- /dev/null +++ b/atlassian/jira/7.5.1/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.5.1 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.5.1/Makefile b/atlassian/jira/7.5.1/Makefile new file mode 100644 index 000000000..f27d551d1 --- /dev/null +++ b/atlassian/jira/7.5.1/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.5.1 . diff --git a/atlassian/jira/7.5.1/README.md b/atlassian/jira/7.5.1/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.5.1/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.5.1/entrypoint.sh b/atlassian/jira/7.5.1/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.5.1/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.5.2/.docker-repository.yml b/atlassian/jira/7.5.2/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.5.2/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.5.2/.dockerignore b/atlassian/jira/7.5.2/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.5.2/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.5.2/Dockerfile b/atlassian/jira/7.5.2/Dockerfile new file mode 100644 index 000000000..5940efb6b --- /dev/null +++ b/atlassian/jira/7.5.2/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.5.2 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.5.2/Makefile b/atlassian/jira/7.5.2/Makefile new file mode 100644 index 000000000..bff56675e --- /dev/null +++ b/atlassian/jira/7.5.2/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.5.2 . diff --git a/atlassian/jira/7.5.2/README.md b/atlassian/jira/7.5.2/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.5.2/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.5.2/entrypoint.sh b/atlassian/jira/7.5.2/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.5.2/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.5.3/.docker-repository.yml b/atlassian/jira/7.5.3/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.5.3/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.5.3/.dockerignore b/atlassian/jira/7.5.3/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.5.3/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.5.3/Dockerfile b/atlassian/jira/7.5.3/Dockerfile new file mode 100644 index 000000000..93a55b9b4 --- /dev/null +++ b/atlassian/jira/7.5.3/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.5.3 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.5.3/Makefile b/atlassian/jira/7.5.3/Makefile new file mode 100644 index 000000000..629bbb09d --- /dev/null +++ b/atlassian/jira/7.5.3/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.5.3 . diff --git a/atlassian/jira/7.5.3/README.md b/atlassian/jira/7.5.3/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.5.3/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.5.3/entrypoint.sh b/atlassian/jira/7.5.3/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.5.3/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.5.4/.docker-repository.yml b/atlassian/jira/7.5.4/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.5.4/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.5.4/.dockerignore b/atlassian/jira/7.5.4/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.5.4/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.5.4/Dockerfile b/atlassian/jira/7.5.4/Dockerfile new file mode 100644 index 000000000..0fb88b1ec --- /dev/null +++ b/atlassian/jira/7.5.4/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.5.4 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.5.4/Makefile b/atlassian/jira/7.5.4/Makefile new file mode 100644 index 000000000..7a62f47df --- /dev/null +++ b/atlassian/jira/7.5.4/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.5.4 . diff --git a/atlassian/jira/7.5.4/README.md b/atlassian/jira/7.5.4/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.5.4/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.5.4/entrypoint.sh b/atlassian/jira/7.5.4/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.5.4/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi From 456fa7b7cd7a5b5de307f0806d20a47471c5f55b Mon Sep 17 00:00:00 2001 From: stam Date: Wed, 15 Jan 2020 13:43:18 +0300 Subject: [PATCH 08/50] travis fix --- .travis.yml | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3753b9ba9..f0718d00e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -141,23 +141,7 @@ matrix: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/qbittorrent:latest qbittorrent/latest - docker push epicmorg/qbittorrent:latest - -######################################### -#### Our LTS images -######################################### - - - name: Jira 7.13.11 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - - docker build --compress -t epicmorg/jira:7.13.11 atlassian/jira/7.13.11 - - docker push epicmorg/jira:7.13.11 - - - name: Confluence 6.13.4 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - - docker build --compress -t epicmorg/confluence:6.13.4 atlassian/confluence/6.13.4 - - docker push epicmorg/confluence:6.13.4 - + ######################################### #### Our Bitbucket images ######################################### @@ -380,6 +364,12 @@ matrix: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/confluence:6.13.3 atlassian/confluence/6.13.3 - docker push epicmorg/confluence:6.13.3 + + - name: Confluence 6.13.4 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.13.4 atlassian/confluence/6.13.4 + - docker push epicmorg/confluence:6.13.4 - name: Confluence 6.14.0 script: @@ -944,6 +934,12 @@ matrix: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:7.13.9 atlassian/jira/7.13.9 - docker push epicmorg/jira:7.13.9 + + - name: Jira 7.13.11 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.13.11 atlassian/jira/7.13.11 + - docker push epicmorg/jira:7.13.11 - name: Jira 8.0.0 script: From d81f6698a649283f3db48eaafbeaece6f152ffd8 Mon Sep 17 00:00:00 2001 From: stam Date: Wed, 15 Jan 2020 13:45:20 +0300 Subject: [PATCH 09/50] travis fix --- .travis.yml | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/.travis.yml b/.travis.yml index f0718d00e..076cd5784 100644 --- a/.travis.yml +++ b/.travis.yml @@ -868,13 +868,6 @@ matrix: - docker build --compress -t epicmorg/jira:7.12.1 atlassian/jira/7.12.1 - docker push epicmorg/jira:7.12.1 -# removed by atlassian -# - name: Jira 7.12.2 -# script: -# - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin -# - docker build --compress -t epicmorg/jira:7.12.2 atlassian/jira/7.12.2 -# - docker push epicmorg/jira:7.12.2 - - name: Jira 7.12.3 script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin @@ -947,13 +940,6 @@ matrix: - docker build --compress -t epicmorg/jira:8.0.0 atlassian/jira/8.0.0 - docker push epicmorg/jira:8.0.0 -# removed by atlassian -# - name: Jira 8.0.1 -# script: -# - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin -# - docker build --compress -t epicmorg/jira:8.0.1 atlassian/jira/8.0.1 -# - docker push epicmorg/jira:8.0.1 - - name: Jira 8.0.2 script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin @@ -1131,19 +1117,7 @@ matrix: ######################################### #### Our minor priority images ######################################### -# - name: Name of image -# script: -# - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin -# - docker build --compress -t epicmorg/repo:tag path/to/folder -# - docker push epicmorg/repo:tag -#### Deprecated -# - name: Staytus -# script: -# - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin -# - docker build --compress -t epicmorg/staytus:latest staytus -# - docker push epicmorg/staytus:latest - - name: qBitTorrent - unstable script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin From 50ae5b58d9c52c25757d06b21c0cc0ea8837ab26 Mon Sep 17 00:00:00 2001 From: stam Date: Wed, 15 Jan 2020 13:57:31 +0300 Subject: [PATCH 10/50] jira 7.6 --- .travis.yml | 104 +++++++++++++ CHANGELOG.md | 1 + atlassian/jira/7.6.0/.docker-repository.yml | 1 + atlassian/jira/7.6.0/.dockerignore | 3 + atlassian/jira/7.6.0/Dockerfile | 47 ++++++ atlassian/jira/7.6.0/Makefile | 4 + atlassian/jira/7.6.0/README.md | 151 +++++++++++++++++++ atlassian/jira/7.6.0/entrypoint.sh | 89 +++++++++++ atlassian/jira/7.6.1/.docker-repository.yml | 1 + atlassian/jira/7.6.1/.dockerignore | 3 + atlassian/jira/7.6.1/Dockerfile | 47 ++++++ atlassian/jira/7.6.1/Makefile | 4 + atlassian/jira/7.6.1/README.md | 151 +++++++++++++++++++ atlassian/jira/7.6.1/entrypoint.sh | 89 +++++++++++ atlassian/jira/7.6.10/.docker-repository.yml | 1 + atlassian/jira/7.6.10/.dockerignore | 3 + atlassian/jira/7.6.10/Dockerfile | 47 ++++++ atlassian/jira/7.6.10/Makefile | 4 + atlassian/jira/7.6.10/README.md | 151 +++++++++++++++++++ atlassian/jira/7.6.10/entrypoint.sh | 89 +++++++++++ atlassian/jira/7.6.11/.docker-repository.yml | 1 + atlassian/jira/7.6.11/.dockerignore | 3 + atlassian/jira/7.6.11/Dockerfile | 47 ++++++ atlassian/jira/7.6.11/Makefile | 4 + atlassian/jira/7.6.11/README.md | 151 +++++++++++++++++++ atlassian/jira/7.6.11/entrypoint.sh | 89 +++++++++++ atlassian/jira/7.6.12/.docker-repository.yml | 1 + atlassian/jira/7.6.12/.dockerignore | 3 + atlassian/jira/7.6.12/Dockerfile | 47 ++++++ atlassian/jira/7.6.12/Makefile | 4 + atlassian/jira/7.6.12/README.md | 151 +++++++++++++++++++ atlassian/jira/7.6.12/entrypoint.sh | 89 +++++++++++ atlassian/jira/7.6.13/.docker-repository.yml | 1 + atlassian/jira/7.6.13/.dockerignore | 3 + atlassian/jira/7.6.13/Dockerfile | 47 ++++++ atlassian/jira/7.6.13/Makefile | 4 + atlassian/jira/7.6.13/README.md | 151 +++++++++++++++++++ atlassian/jira/7.6.13/entrypoint.sh | 89 +++++++++++ atlassian/jira/7.6.14/.docker-repository.yml | 1 + atlassian/jira/7.6.14/.dockerignore | 3 + atlassian/jira/7.6.14/Dockerfile | 47 ++++++ atlassian/jira/7.6.14/Makefile | 4 + atlassian/jira/7.6.14/README.md | 151 +++++++++++++++++++ atlassian/jira/7.6.14/entrypoint.sh | 89 +++++++++++ atlassian/jira/7.6.15/.docker-repository.yml | 1 + atlassian/jira/7.6.15/.dockerignore | 3 + atlassian/jira/7.6.15/Dockerfile | 47 ++++++ atlassian/jira/7.6.15/Makefile | 4 + atlassian/jira/7.6.15/README.md | 151 +++++++++++++++++++ atlassian/jira/7.6.15/entrypoint.sh | 89 +++++++++++ atlassian/jira/7.6.16/.docker-repository.yml | 1 + atlassian/jira/7.6.16/.dockerignore | 3 + atlassian/jira/7.6.16/Dockerfile | 47 ++++++ atlassian/jira/7.6.16/Makefile | 4 + atlassian/jira/7.6.16/README.md | 151 +++++++++++++++++++ atlassian/jira/7.6.16/entrypoint.sh | 89 +++++++++++ atlassian/jira/7.6.17/.docker-repository.yml | 1 + atlassian/jira/7.6.17/.dockerignore | 3 + atlassian/jira/7.6.17/Dockerfile | 47 ++++++ atlassian/jira/7.6.17/Makefile | 4 + atlassian/jira/7.6.17/README.md | 151 +++++++++++++++++++ atlassian/jira/7.6.17/entrypoint.sh | 89 +++++++++++ atlassian/jira/7.6.2/.docker-repository.yml | 1 + atlassian/jira/7.6.2/.dockerignore | 3 + atlassian/jira/7.6.2/Dockerfile | 47 ++++++ atlassian/jira/7.6.2/Makefile | 4 + atlassian/jira/7.6.2/README.md | 151 +++++++++++++++++++ atlassian/jira/7.6.2/entrypoint.sh | 89 +++++++++++ atlassian/jira/7.6.3/.docker-repository.yml | 1 + atlassian/jira/7.6.3/.dockerignore | 3 + atlassian/jira/7.6.3/Dockerfile | 47 ++++++ atlassian/jira/7.6.3/Makefile | 4 + atlassian/jira/7.6.3/README.md | 151 +++++++++++++++++++ atlassian/jira/7.6.3/entrypoint.sh | 89 +++++++++++ atlassian/jira/7.6.4/.docker-repository.yml | 1 + atlassian/jira/7.6.4/.dockerignore | 3 + atlassian/jira/7.6.4/Dockerfile | 47 ++++++ atlassian/jira/7.6.4/Makefile | 4 + atlassian/jira/7.6.4/README.md | 151 +++++++++++++++++++ atlassian/jira/7.6.4/entrypoint.sh | 89 +++++++++++ atlassian/jira/7.6.6/.docker-repository.yml | 1 + atlassian/jira/7.6.6/.dockerignore | 3 + atlassian/jira/7.6.6/Dockerfile | 47 ++++++ atlassian/jira/7.6.6/Makefile | 4 + atlassian/jira/7.6.6/README.md | 151 +++++++++++++++++++ atlassian/jira/7.6.6/entrypoint.sh | 89 +++++++++++ atlassian/jira/7.6.7/.docker-repository.yml | 1 + atlassian/jira/7.6.7/.dockerignore | 3 + atlassian/jira/7.6.7/Dockerfile | 47 ++++++ atlassian/jira/7.6.7/Makefile | 4 + atlassian/jira/7.6.7/README.md | 151 +++++++++++++++++++ atlassian/jira/7.6.7/entrypoint.sh | 89 +++++++++++ atlassian/jira/7.6.8/.docker-repository.yml | 1 + atlassian/jira/7.6.8/.dockerignore | 3 + atlassian/jira/7.6.8/Dockerfile | 47 ++++++ atlassian/jira/7.6.8/Makefile | 4 + atlassian/jira/7.6.8/README.md | 151 +++++++++++++++++++ atlassian/jira/7.6.8/entrypoint.sh | 89 +++++++++++ atlassian/jira/7.6.9/.docker-repository.yml | 1 + atlassian/jira/7.6.9/.dockerignore | 3 + atlassian/jira/7.6.9/Dockerfile | 47 ++++++ atlassian/jira/7.6.9/Makefile | 4 + atlassian/jira/7.6.9/README.md | 151 +++++++++++++++++++ atlassian/jira/7.6.9/entrypoint.sh | 89 +++++++++++ 104 files changed, 5120 insertions(+) create mode 100644 atlassian/jira/7.6.0/.docker-repository.yml create mode 100644 atlassian/jira/7.6.0/.dockerignore create mode 100644 atlassian/jira/7.6.0/Dockerfile create mode 100644 atlassian/jira/7.6.0/Makefile create mode 100644 atlassian/jira/7.6.0/README.md create mode 100644 atlassian/jira/7.6.0/entrypoint.sh create mode 100644 atlassian/jira/7.6.1/.docker-repository.yml create mode 100644 atlassian/jira/7.6.1/.dockerignore create mode 100644 atlassian/jira/7.6.1/Dockerfile create mode 100644 atlassian/jira/7.6.1/Makefile create mode 100644 atlassian/jira/7.6.1/README.md create mode 100644 atlassian/jira/7.6.1/entrypoint.sh create mode 100644 atlassian/jira/7.6.10/.docker-repository.yml create mode 100644 atlassian/jira/7.6.10/.dockerignore create mode 100644 atlassian/jira/7.6.10/Dockerfile create mode 100644 atlassian/jira/7.6.10/Makefile create mode 100644 atlassian/jira/7.6.10/README.md create mode 100644 atlassian/jira/7.6.10/entrypoint.sh create mode 100644 atlassian/jira/7.6.11/.docker-repository.yml create mode 100644 atlassian/jira/7.6.11/.dockerignore create mode 100644 atlassian/jira/7.6.11/Dockerfile create mode 100644 atlassian/jira/7.6.11/Makefile create mode 100644 atlassian/jira/7.6.11/README.md create mode 100644 atlassian/jira/7.6.11/entrypoint.sh create mode 100644 atlassian/jira/7.6.12/.docker-repository.yml create mode 100644 atlassian/jira/7.6.12/.dockerignore create mode 100644 atlassian/jira/7.6.12/Dockerfile create mode 100644 atlassian/jira/7.6.12/Makefile create mode 100644 atlassian/jira/7.6.12/README.md create mode 100644 atlassian/jira/7.6.12/entrypoint.sh create mode 100644 atlassian/jira/7.6.13/.docker-repository.yml create mode 100644 atlassian/jira/7.6.13/.dockerignore create mode 100644 atlassian/jira/7.6.13/Dockerfile create mode 100644 atlassian/jira/7.6.13/Makefile create mode 100644 atlassian/jira/7.6.13/README.md create mode 100644 atlassian/jira/7.6.13/entrypoint.sh create mode 100644 atlassian/jira/7.6.14/.docker-repository.yml create mode 100644 atlassian/jira/7.6.14/.dockerignore create mode 100644 atlassian/jira/7.6.14/Dockerfile create mode 100644 atlassian/jira/7.6.14/Makefile create mode 100644 atlassian/jira/7.6.14/README.md create mode 100644 atlassian/jira/7.6.14/entrypoint.sh create mode 100644 atlassian/jira/7.6.15/.docker-repository.yml create mode 100644 atlassian/jira/7.6.15/.dockerignore create mode 100644 atlassian/jira/7.6.15/Dockerfile create mode 100644 atlassian/jira/7.6.15/Makefile create mode 100644 atlassian/jira/7.6.15/README.md create mode 100644 atlassian/jira/7.6.15/entrypoint.sh create mode 100644 atlassian/jira/7.6.16/.docker-repository.yml create mode 100644 atlassian/jira/7.6.16/.dockerignore create mode 100644 atlassian/jira/7.6.16/Dockerfile create mode 100644 atlassian/jira/7.6.16/Makefile create mode 100644 atlassian/jira/7.6.16/README.md create mode 100644 atlassian/jira/7.6.16/entrypoint.sh create mode 100644 atlassian/jira/7.6.17/.docker-repository.yml create mode 100644 atlassian/jira/7.6.17/.dockerignore create mode 100644 atlassian/jira/7.6.17/Dockerfile create mode 100644 atlassian/jira/7.6.17/Makefile create mode 100644 atlassian/jira/7.6.17/README.md create mode 100644 atlassian/jira/7.6.17/entrypoint.sh create mode 100644 atlassian/jira/7.6.2/.docker-repository.yml create mode 100644 atlassian/jira/7.6.2/.dockerignore create mode 100644 atlassian/jira/7.6.2/Dockerfile create mode 100644 atlassian/jira/7.6.2/Makefile create mode 100644 atlassian/jira/7.6.2/README.md create mode 100644 atlassian/jira/7.6.2/entrypoint.sh create mode 100644 atlassian/jira/7.6.3/.docker-repository.yml create mode 100644 atlassian/jira/7.6.3/.dockerignore create mode 100644 atlassian/jira/7.6.3/Dockerfile create mode 100644 atlassian/jira/7.6.3/Makefile create mode 100644 atlassian/jira/7.6.3/README.md create mode 100644 atlassian/jira/7.6.3/entrypoint.sh create mode 100644 atlassian/jira/7.6.4/.docker-repository.yml create mode 100644 atlassian/jira/7.6.4/.dockerignore create mode 100644 atlassian/jira/7.6.4/Dockerfile create mode 100644 atlassian/jira/7.6.4/Makefile create mode 100644 atlassian/jira/7.6.4/README.md create mode 100644 atlassian/jira/7.6.4/entrypoint.sh create mode 100644 atlassian/jira/7.6.6/.docker-repository.yml create mode 100644 atlassian/jira/7.6.6/.dockerignore create mode 100644 atlassian/jira/7.6.6/Dockerfile create mode 100644 atlassian/jira/7.6.6/Makefile create mode 100644 atlassian/jira/7.6.6/README.md create mode 100644 atlassian/jira/7.6.6/entrypoint.sh create mode 100644 atlassian/jira/7.6.7/.docker-repository.yml create mode 100644 atlassian/jira/7.6.7/.dockerignore create mode 100644 atlassian/jira/7.6.7/Dockerfile create mode 100644 atlassian/jira/7.6.7/Makefile create mode 100644 atlassian/jira/7.6.7/README.md create mode 100644 atlassian/jira/7.6.7/entrypoint.sh create mode 100644 atlassian/jira/7.6.8/.docker-repository.yml create mode 100644 atlassian/jira/7.6.8/.dockerignore create mode 100644 atlassian/jira/7.6.8/Dockerfile create mode 100644 atlassian/jira/7.6.8/Makefile create mode 100644 atlassian/jira/7.6.8/README.md create mode 100644 atlassian/jira/7.6.8/entrypoint.sh create mode 100644 atlassian/jira/7.6.9/.docker-repository.yml create mode 100644 atlassian/jira/7.6.9/.dockerignore create mode 100644 atlassian/jira/7.6.9/Dockerfile create mode 100644 atlassian/jira/7.6.9/Makefile create mode 100644 atlassian/jira/7.6.9/README.md create mode 100644 atlassian/jira/7.6.9/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index 076cd5784..b2e66d8d8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -818,6 +818,110 @@ matrix: - docker build --compress -t epicmorg/jira:7.5.4 atlassian/jira/7.5.4 - docker push epicmorg/jira:7.5.4 +########## + + - name: Jira 7.6.0 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.0 atlassian/jira/7.6.0 + - docker push epicmorg/jira:7.6.0 + + - name: Jira 7.6.1 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.1 atlassian/jira/7.6.1 + - docker push epicmorg/jira:7.6.1 + + - name: Jira 7.6.2 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.2 atlassian/jira/7.6.2 + - docker push epicmorg/jira:7.6.2 + + - name: Jira 7.6.3 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.3 atlassian/jira/7.6.3 + - docker push epicmorg/jira:7.6.3 + + - name: Jira 7.6.4 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.4 atlassian/jira/7.6.4 + - docker push epicmorg/jira:7.6.4 + + - name: Jira 7.6.6 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.6 atlassian/jira/7.6.6 + - docker push epicmorg/jira:7.6.6 + + - name: Jira 7.6.7 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.7 atlassian/jira/7.6.7 + - docker push epicmorg/jira:7.6.7 + + - name: Jira 7.6.8 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.8 atlassian/jira/7.6.8 + - docker push epicmorg/jira:7.6.8 + + - name: Jira 7.6.9 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.9 atlassian/jira/7.6.9 + - docker push epicmorg/jira:7.6.9 + + - name: Jira 7.6.10 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.10 atlassian/jira/7.6.10 + - docker push epicmorg/jira:7.6.10 + + - name: Jira 7.6.11 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.11 atlassian/jira/7.6.11 + - docker push epicmorg/jira:7.6.11 + + - name: Jira 7.6.12 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.12 atlassian/jira/7.6.12 + - docker push epicmorg/jira:7.6.12 + + - name: Jira 7.6.13 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.13 atlassian/jira/7.6.13 + - docker push epicmorg/jira:7.6.13 + + - name: Jira 7.6.14 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.14 atlassian/jira/7.6.14 + - docker push epicmorg/jira:7.6.14 + + - name: Jira 7.6.15 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.15 atlassian/jira/7.6.15 + - docker push epicmorg/jira:7.6.15 + + - name: Jira 7.6.16 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.16 atlassian/jira/7.6.16 + - docker push epicmorg/jira:7.6.16 + + - name: Jira 7.6.17 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.17 atlassian/jira/7.6.17 + - docker push epicmorg/jira:7.6.17 + ########## - name: Jira 7.10.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index 571872851..7e81d600d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ * added `Jira 7.3.x`: `7.3.0`, `7.3.1`, `7.3.2`, `7.3.3`, `7.3.4`, `7.3.5`, `7.3.6`, `7.3.7`, `7.3.8`, `7. 3.9` * added `Jira 7.4.x`: `7.4.0`, `7.4.1`, `7.4.2`, `7.4.3`, `7.4.4`, `7.4.5`, `7.4.6` * added `Jira 7.5.x`: `7.5.0`, `7.5.1`, `7.5.2`, `7.5.3`, `7.5.4` + * added `Jira 7.6.x`: `7.6.0`, `7.6.1`, `7.6.2`, `7.6.3`, `7.6.4`, `7.6.6`, `7.6.7`, `7.6.8`, `7.6.9`, `7.6.10`, `7.6.11`, `7.6.12`, `7.6.13`, `7.6.14`, `7.6.15`, `7.6.16`, `7.6.17` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/jira/7.6.0/.docker-repository.yml b/atlassian/jira/7.6.0/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.6.0/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.6.0/.dockerignore b/atlassian/jira/7.6.0/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.6.0/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.6.0/Dockerfile b/atlassian/jira/7.6.0/Dockerfile new file mode 100644 index 000000000..05617e427 --- /dev/null +++ b/atlassian/jira/7.6.0/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.6.0 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.6.0/Makefile b/atlassian/jira/7.6.0/Makefile new file mode 100644 index 000000000..22296bdc8 --- /dev/null +++ b/atlassian/jira/7.6.0/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.6.0 . diff --git a/atlassian/jira/7.6.0/README.md b/atlassian/jira/7.6.0/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.6.0/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.6.0/entrypoint.sh b/atlassian/jira/7.6.0/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.6.0/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.6.1/.docker-repository.yml b/atlassian/jira/7.6.1/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.6.1/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.6.1/.dockerignore b/atlassian/jira/7.6.1/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.6.1/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.6.1/Dockerfile b/atlassian/jira/7.6.1/Dockerfile new file mode 100644 index 000000000..b64b86a27 --- /dev/null +++ b/atlassian/jira/7.6.1/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.6.1 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.6.1/Makefile b/atlassian/jira/7.6.1/Makefile new file mode 100644 index 000000000..0f3b0d140 --- /dev/null +++ b/atlassian/jira/7.6.1/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.6.1 . diff --git a/atlassian/jira/7.6.1/README.md b/atlassian/jira/7.6.1/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.6.1/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.6.1/entrypoint.sh b/atlassian/jira/7.6.1/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.6.1/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.6.10/.docker-repository.yml b/atlassian/jira/7.6.10/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.6.10/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.6.10/.dockerignore b/atlassian/jira/7.6.10/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.6.10/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.6.10/Dockerfile b/atlassian/jira/7.6.10/Dockerfile new file mode 100644 index 000000000..ed257cf20 --- /dev/null +++ b/atlassian/jira/7.6.10/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.6.10 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.6.10/Makefile b/atlassian/jira/7.6.10/Makefile new file mode 100644 index 000000000..edac4d2f6 --- /dev/null +++ b/atlassian/jira/7.6.10/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.6.10 . diff --git a/atlassian/jira/7.6.10/README.md b/atlassian/jira/7.6.10/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.6.10/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.6.10/entrypoint.sh b/atlassian/jira/7.6.10/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.6.10/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.6.11/.docker-repository.yml b/atlassian/jira/7.6.11/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.6.11/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.6.11/.dockerignore b/atlassian/jira/7.6.11/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.6.11/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.6.11/Dockerfile b/atlassian/jira/7.6.11/Dockerfile new file mode 100644 index 000000000..d33d794a2 --- /dev/null +++ b/atlassian/jira/7.6.11/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.6.11 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.6.11/Makefile b/atlassian/jira/7.6.11/Makefile new file mode 100644 index 000000000..f1a503f40 --- /dev/null +++ b/atlassian/jira/7.6.11/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.6.11 \ No newline at end of file diff --git a/atlassian/jira/7.6.11/README.md b/atlassian/jira/7.6.11/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.6.11/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.6.11/entrypoint.sh b/atlassian/jira/7.6.11/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.6.11/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.6.12/.docker-repository.yml b/atlassian/jira/7.6.12/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.6.12/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.6.12/.dockerignore b/atlassian/jira/7.6.12/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.6.12/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.6.12/Dockerfile b/atlassian/jira/7.6.12/Dockerfile new file mode 100644 index 000000000..dbf1c3182 --- /dev/null +++ b/atlassian/jira/7.6.12/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.6.12 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.6.12/Makefile b/atlassian/jira/7.6.12/Makefile new file mode 100644 index 000000000..95ea442dc --- /dev/null +++ b/atlassian/jira/7.6.12/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.6.12 . diff --git a/atlassian/jira/7.6.12/README.md b/atlassian/jira/7.6.12/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.6.12/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.6.12/entrypoint.sh b/atlassian/jira/7.6.12/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.6.12/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.6.13/.docker-repository.yml b/atlassian/jira/7.6.13/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.6.13/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.6.13/.dockerignore b/atlassian/jira/7.6.13/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.6.13/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.6.13/Dockerfile b/atlassian/jira/7.6.13/Dockerfile new file mode 100644 index 000000000..e174a3df8 --- /dev/null +++ b/atlassian/jira/7.6.13/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.6.13 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.6.13/Makefile b/atlassian/jira/7.6.13/Makefile new file mode 100644 index 000000000..2720d6482 --- /dev/null +++ b/atlassian/jira/7.6.13/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.6.13 . diff --git a/atlassian/jira/7.6.13/README.md b/atlassian/jira/7.6.13/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.6.13/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.6.13/entrypoint.sh b/atlassian/jira/7.6.13/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.6.13/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.6.14/.docker-repository.yml b/atlassian/jira/7.6.14/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.6.14/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.6.14/.dockerignore b/atlassian/jira/7.6.14/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.6.14/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.6.14/Dockerfile b/atlassian/jira/7.6.14/Dockerfile new file mode 100644 index 000000000..55aa10be3 --- /dev/null +++ b/atlassian/jira/7.6.14/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.6.14 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.6.14/Makefile b/atlassian/jira/7.6.14/Makefile new file mode 100644 index 000000000..bc18cc2a6 --- /dev/null +++ b/atlassian/jira/7.6.14/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.6.14 . diff --git a/atlassian/jira/7.6.14/README.md b/atlassian/jira/7.6.14/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.6.14/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.6.14/entrypoint.sh b/atlassian/jira/7.6.14/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.6.14/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.6.15/.docker-repository.yml b/atlassian/jira/7.6.15/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.6.15/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.6.15/.dockerignore b/atlassian/jira/7.6.15/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.6.15/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.6.15/Dockerfile b/atlassian/jira/7.6.15/Dockerfile new file mode 100644 index 000000000..2aea85a3d --- /dev/null +++ b/atlassian/jira/7.6.15/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.6.15 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.6.15/Makefile b/atlassian/jira/7.6.15/Makefile new file mode 100644 index 000000000..de0914463 --- /dev/null +++ b/atlassian/jira/7.6.15/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.6.15 . diff --git a/atlassian/jira/7.6.15/README.md b/atlassian/jira/7.6.15/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.6.15/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.6.15/entrypoint.sh b/atlassian/jira/7.6.15/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.6.15/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.6.16/.docker-repository.yml b/atlassian/jira/7.6.16/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.6.16/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.6.16/.dockerignore b/atlassian/jira/7.6.16/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.6.16/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.6.16/Dockerfile b/atlassian/jira/7.6.16/Dockerfile new file mode 100644 index 000000000..2cdb83881 --- /dev/null +++ b/atlassian/jira/7.6.16/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.6.16 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.6.16/Makefile b/atlassian/jira/7.6.16/Makefile new file mode 100644 index 000000000..53a9333f0 --- /dev/null +++ b/atlassian/jira/7.6.16/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.6.16 . diff --git a/atlassian/jira/7.6.16/README.md b/atlassian/jira/7.6.16/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.6.16/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.6.16/entrypoint.sh b/atlassian/jira/7.6.16/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.6.16/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.6.17/.docker-repository.yml b/atlassian/jira/7.6.17/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.6.17/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.6.17/.dockerignore b/atlassian/jira/7.6.17/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.6.17/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.6.17/Dockerfile b/atlassian/jira/7.6.17/Dockerfile new file mode 100644 index 000000000..e12c6532f --- /dev/null +++ b/atlassian/jira/7.6.17/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.6.17 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.6.17/Makefile b/atlassian/jira/7.6.17/Makefile new file mode 100644 index 000000000..456033f2d --- /dev/null +++ b/atlassian/jira/7.6.17/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.6.17 . diff --git a/atlassian/jira/7.6.17/README.md b/atlassian/jira/7.6.17/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.6.17/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.6.17/entrypoint.sh b/atlassian/jira/7.6.17/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.6.17/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.6.2/.docker-repository.yml b/atlassian/jira/7.6.2/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.6.2/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.6.2/.dockerignore b/atlassian/jira/7.6.2/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.6.2/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.6.2/Dockerfile b/atlassian/jira/7.6.2/Dockerfile new file mode 100644 index 000000000..8d6fc9d86 --- /dev/null +++ b/atlassian/jira/7.6.2/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.6.2 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.6.2/Makefile b/atlassian/jira/7.6.2/Makefile new file mode 100644 index 000000000..d4e074a42 --- /dev/null +++ b/atlassian/jira/7.6.2/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.6.2 . diff --git a/atlassian/jira/7.6.2/README.md b/atlassian/jira/7.6.2/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.6.2/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.6.2/entrypoint.sh b/atlassian/jira/7.6.2/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.6.2/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.6.3/.docker-repository.yml b/atlassian/jira/7.6.3/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.6.3/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.6.3/.dockerignore b/atlassian/jira/7.6.3/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.6.3/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.6.3/Dockerfile b/atlassian/jira/7.6.3/Dockerfile new file mode 100644 index 000000000..b106ce402 --- /dev/null +++ b/atlassian/jira/7.6.3/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.6.3 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.6.3/Makefile b/atlassian/jira/7.6.3/Makefile new file mode 100644 index 000000000..7a8c98ffb --- /dev/null +++ b/atlassian/jira/7.6.3/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.6.3 . diff --git a/atlassian/jira/7.6.3/README.md b/atlassian/jira/7.6.3/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.6.3/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.6.3/entrypoint.sh b/atlassian/jira/7.6.3/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.6.3/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.6.4/.docker-repository.yml b/atlassian/jira/7.6.4/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.6.4/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.6.4/.dockerignore b/atlassian/jira/7.6.4/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.6.4/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.6.4/Dockerfile b/atlassian/jira/7.6.4/Dockerfile new file mode 100644 index 000000000..66aa5c5f3 --- /dev/null +++ b/atlassian/jira/7.6.4/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.6.4 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.6.4/Makefile b/atlassian/jira/7.6.4/Makefile new file mode 100644 index 000000000..6396d95c3 --- /dev/null +++ b/atlassian/jira/7.6.4/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.6.4 . diff --git a/atlassian/jira/7.6.4/README.md b/atlassian/jira/7.6.4/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.6.4/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.6.4/entrypoint.sh b/atlassian/jira/7.6.4/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.6.4/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.6.6/.docker-repository.yml b/atlassian/jira/7.6.6/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.6.6/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.6.6/.dockerignore b/atlassian/jira/7.6.6/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.6.6/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.6.6/Dockerfile b/atlassian/jira/7.6.6/Dockerfile new file mode 100644 index 000000000..2041a4e0e --- /dev/null +++ b/atlassian/jira/7.6.6/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.6.6 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.6.6/Makefile b/atlassian/jira/7.6.6/Makefile new file mode 100644 index 000000000..258c78519 --- /dev/null +++ b/atlassian/jira/7.6.6/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.6.6 . diff --git a/atlassian/jira/7.6.6/README.md b/atlassian/jira/7.6.6/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.6.6/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.6.6/entrypoint.sh b/atlassian/jira/7.6.6/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.6.6/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.6.7/.docker-repository.yml b/atlassian/jira/7.6.7/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.6.7/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.6.7/.dockerignore b/atlassian/jira/7.6.7/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.6.7/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.6.7/Dockerfile b/atlassian/jira/7.6.7/Dockerfile new file mode 100644 index 000000000..93e9070b7 --- /dev/null +++ b/atlassian/jira/7.6.7/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.6.7 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.6.7/Makefile b/atlassian/jira/7.6.7/Makefile new file mode 100644 index 000000000..b6dfcfec1 --- /dev/null +++ b/atlassian/jira/7.6.7/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.6.7 . diff --git a/atlassian/jira/7.6.7/README.md b/atlassian/jira/7.6.7/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.6.7/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.6.7/entrypoint.sh b/atlassian/jira/7.6.7/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.6.7/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.6.8/.docker-repository.yml b/atlassian/jira/7.6.8/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.6.8/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.6.8/.dockerignore b/atlassian/jira/7.6.8/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.6.8/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.6.8/Dockerfile b/atlassian/jira/7.6.8/Dockerfile new file mode 100644 index 000000000..f7ec54037 --- /dev/null +++ b/atlassian/jira/7.6.8/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.6.8 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.6.8/Makefile b/atlassian/jira/7.6.8/Makefile new file mode 100644 index 000000000..d4dbf81e3 --- /dev/null +++ b/atlassian/jira/7.6.8/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.6.8 . diff --git a/atlassian/jira/7.6.8/README.md b/atlassian/jira/7.6.8/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.6.8/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.6.8/entrypoint.sh b/atlassian/jira/7.6.8/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.6.8/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.6.9/.docker-repository.yml b/atlassian/jira/7.6.9/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.6.9/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.6.9/.dockerignore b/atlassian/jira/7.6.9/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.6.9/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.6.9/Dockerfile b/atlassian/jira/7.6.9/Dockerfile new file mode 100644 index 000000000..c838cc1c5 --- /dev/null +++ b/atlassian/jira/7.6.9/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.6.9 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.6.9/Makefile b/atlassian/jira/7.6.9/Makefile new file mode 100644 index 000000000..4d1b321ab --- /dev/null +++ b/atlassian/jira/7.6.9/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.6.9 . diff --git a/atlassian/jira/7.6.9/README.md b/atlassian/jira/7.6.9/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.6.9/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.6.9/entrypoint.sh b/atlassian/jira/7.6.9/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.6.9/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi From 7cfa7a0ee03b547d2011375f84a89ce8d284b0bc Mon Sep 17 00:00:00 2001 From: stam Date: Wed, 15 Jan 2020 14:02:48 +0300 Subject: [PATCH 11/50] jira 7.7 --- .travis.yml | 25 ++++ CHANGELOG.md | 1 + atlassian/jira/7.7.0/.docker-repository.yml | 1 + atlassian/jira/7.7.0/.dockerignore | 3 + atlassian/jira/7.7.0/Dockerfile | 47 ++++++ atlassian/jira/7.7.0/Makefile | 4 + atlassian/jira/7.7.0/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.7.0/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.7.1/.docker-repository.yml | 1 + atlassian/jira/7.7.1/.dockerignore | 3 + atlassian/jira/7.7.1/Dockerfile | 47 ++++++ atlassian/jira/7.7.1/Makefile | 4 + atlassian/jira/7.7.1/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.7.1/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.7.2/.docker-repository.yml | 1 + atlassian/jira/7.7.2/.dockerignore | 3 + atlassian/jira/7.7.2/Dockerfile | 47 ++++++ atlassian/jira/7.7.2/Makefile | 4 + atlassian/jira/7.7.2/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.7.2/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.7.4/.docker-repository.yml | 1 + atlassian/jira/7.7.4/.dockerignore | 3 + atlassian/jira/7.7.4/Dockerfile | 47 ++++++ atlassian/jira/7.7.4/Makefile | 4 + atlassian/jira/7.7.4/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.7.4/entrypoint.sh | 89 ++++++++++++ 26 files changed, 1206 insertions(+) create mode 100644 atlassian/jira/7.7.0/.docker-repository.yml create mode 100644 atlassian/jira/7.7.0/.dockerignore create mode 100644 atlassian/jira/7.7.0/Dockerfile create mode 100644 atlassian/jira/7.7.0/Makefile create mode 100644 atlassian/jira/7.7.0/README.md create mode 100644 atlassian/jira/7.7.0/entrypoint.sh create mode 100644 atlassian/jira/7.7.1/.docker-repository.yml create mode 100644 atlassian/jira/7.7.1/.dockerignore create mode 100644 atlassian/jira/7.7.1/Dockerfile create mode 100644 atlassian/jira/7.7.1/Makefile create mode 100644 atlassian/jira/7.7.1/README.md create mode 100644 atlassian/jira/7.7.1/entrypoint.sh create mode 100644 atlassian/jira/7.7.2/.docker-repository.yml create mode 100644 atlassian/jira/7.7.2/.dockerignore create mode 100644 atlassian/jira/7.7.2/Dockerfile create mode 100644 atlassian/jira/7.7.2/Makefile create mode 100644 atlassian/jira/7.7.2/README.md create mode 100644 atlassian/jira/7.7.2/entrypoint.sh create mode 100644 atlassian/jira/7.7.4/.docker-repository.yml create mode 100644 atlassian/jira/7.7.4/.dockerignore create mode 100644 atlassian/jira/7.7.4/Dockerfile create mode 100644 atlassian/jira/7.7.4/Makefile create mode 100644 atlassian/jira/7.7.4/README.md create mode 100644 atlassian/jira/7.7.4/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index b2e66d8d8..20f081af6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -924,6 +924,31 @@ matrix: ########## + - name: Jira 7.7.0 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.7.0 atlassian/jira/7.7.0 + - docker push epicmorg/jira:7.7.0 + + - name: Jira 7.7.1 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.7.1 atlassian/jira/7.7.1 + - docker push epicmorg/jira:7.7.1 + + - name: Jira 7.7.2 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.7.2 atlassian/jira/7.7.2 + - docker push epicmorg/jira:7.7.2 + + - name: Jira 7.7.4 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.7.4 atlassian/jira/7.7.4 + - docker push epicmorg/jira:7.7.4 + +########## - name: Jira 7.10.0 script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e81d600d..a43342e97 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ * added `Jira 7.4.x`: `7.4.0`, `7.4.1`, `7.4.2`, `7.4.3`, `7.4.4`, `7.4.5`, `7.4.6` * added `Jira 7.5.x`: `7.5.0`, `7.5.1`, `7.5.2`, `7.5.3`, `7.5.4` * added `Jira 7.6.x`: `7.6.0`, `7.6.1`, `7.6.2`, `7.6.3`, `7.6.4`, `7.6.6`, `7.6.7`, `7.6.8`, `7.6.9`, `7.6.10`, `7.6.11`, `7.6.12`, `7.6.13`, `7.6.14`, `7.6.15`, `7.6.16`, `7.6.17` + * added `Jira 7.7.x`: `7.7.0`, `7.7.1`, `7.7.2`, `7.7.4` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/jira/7.7.0/.docker-repository.yml b/atlassian/jira/7.7.0/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.7.0/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.7.0/.dockerignore b/atlassian/jira/7.7.0/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.7.0/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.7.0/Dockerfile b/atlassian/jira/7.7.0/Dockerfile new file mode 100644 index 000000000..c28dc53fb --- /dev/null +++ b/atlassian/jira/7.7.0/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.7.0 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.7.0/Makefile b/atlassian/jira/7.7.0/Makefile new file mode 100644 index 000000000..484b63ebe --- /dev/null +++ b/atlassian/jira/7.7.0/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.7.0 . diff --git a/atlassian/jira/7.7.0/README.md b/atlassian/jira/7.7.0/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.7.0/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.7.0/entrypoint.sh b/atlassian/jira/7.7.0/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.7.0/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.7.1/.docker-repository.yml b/atlassian/jira/7.7.1/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.7.1/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.7.1/.dockerignore b/atlassian/jira/7.7.1/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.7.1/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.7.1/Dockerfile b/atlassian/jira/7.7.1/Dockerfile new file mode 100644 index 000000000..7feb33a0b --- /dev/null +++ b/atlassian/jira/7.7.1/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.7.1 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.7.1/Makefile b/atlassian/jira/7.7.1/Makefile new file mode 100644 index 000000000..f585f6150 --- /dev/null +++ b/atlassian/jira/7.7.1/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.7.1 . diff --git a/atlassian/jira/7.7.1/README.md b/atlassian/jira/7.7.1/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.7.1/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.7.1/entrypoint.sh b/atlassian/jira/7.7.1/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.7.1/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.7.2/.docker-repository.yml b/atlassian/jira/7.7.2/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.7.2/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.7.2/.dockerignore b/atlassian/jira/7.7.2/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.7.2/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.7.2/Dockerfile b/atlassian/jira/7.7.2/Dockerfile new file mode 100644 index 000000000..5a5c5d671 --- /dev/null +++ b/atlassian/jira/7.7.2/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.7.2 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.7.2/Makefile b/atlassian/jira/7.7.2/Makefile new file mode 100644 index 000000000..33f32889d --- /dev/null +++ b/atlassian/jira/7.7.2/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.7.2 . diff --git a/atlassian/jira/7.7.2/README.md b/atlassian/jira/7.7.2/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.7.2/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.7.2/entrypoint.sh b/atlassian/jira/7.7.2/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.7.2/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.7.4/.docker-repository.yml b/atlassian/jira/7.7.4/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.7.4/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.7.4/.dockerignore b/atlassian/jira/7.7.4/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.7.4/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.7.4/Dockerfile b/atlassian/jira/7.7.4/Dockerfile new file mode 100644 index 000000000..79346f86c --- /dev/null +++ b/atlassian/jira/7.7.4/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.7.4 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.7.4/Makefile b/atlassian/jira/7.7.4/Makefile new file mode 100644 index 000000000..ec7c511d6 --- /dev/null +++ b/atlassian/jira/7.7.4/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.7.4 . diff --git a/atlassian/jira/7.7.4/README.md b/atlassian/jira/7.7.4/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.7.4/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.7.4/entrypoint.sh b/atlassian/jira/7.7.4/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.7.4/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi From a07d96a8338291dd240b369973470b1cd236b2d0 Mon Sep 17 00:00:00 2001 From: stam Date: Wed, 15 Jan 2020 14:05:23 +0300 Subject: [PATCH 12/50] jira 7.8 --- .travis.yml | 26 ++++ CHANGELOG.md | 1 + atlassian/jira/7.8.0/.docker-repository.yml | 1 + atlassian/jira/7.8.0/.dockerignore | 3 + atlassian/jira/7.8.0/Dockerfile | 47 ++++++ atlassian/jira/7.8.0/Makefile | 4 + atlassian/jira/7.8.0/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.8.0/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.8.1/.docker-repository.yml | 1 + atlassian/jira/7.8.1/.dockerignore | 3 + atlassian/jira/7.8.1/Dockerfile | 47 ++++++ atlassian/jira/7.8.1/Makefile | 4 + atlassian/jira/7.8.1/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.8.1/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.8.2/.docker-repository.yml | 1 + atlassian/jira/7.8.2/.dockerignore | 3 + atlassian/jira/7.8.2/Dockerfile | 47 ++++++ atlassian/jira/7.8.2/Makefile | 4 + atlassian/jira/7.8.2/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.8.2/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.8.4/.docker-repository.yml | 1 + atlassian/jira/7.8.4/.dockerignore | 3 + atlassian/jira/7.8.4/Dockerfile | 47 ++++++ atlassian/jira/7.8.4/Makefile | 4 + atlassian/jira/7.8.4/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.8.4/entrypoint.sh | 89 ++++++++++++ 26 files changed, 1207 insertions(+) create mode 100644 atlassian/jira/7.8.0/.docker-repository.yml create mode 100644 atlassian/jira/7.8.0/.dockerignore create mode 100644 atlassian/jira/7.8.0/Dockerfile create mode 100644 atlassian/jira/7.8.0/Makefile create mode 100644 atlassian/jira/7.8.0/README.md create mode 100644 atlassian/jira/7.8.0/entrypoint.sh create mode 100644 atlassian/jira/7.8.1/.docker-repository.yml create mode 100644 atlassian/jira/7.8.1/.dockerignore create mode 100644 atlassian/jira/7.8.1/Dockerfile create mode 100644 atlassian/jira/7.8.1/Makefile create mode 100644 atlassian/jira/7.8.1/README.md create mode 100644 atlassian/jira/7.8.1/entrypoint.sh create mode 100644 atlassian/jira/7.8.2/.docker-repository.yml create mode 100644 atlassian/jira/7.8.2/.dockerignore create mode 100644 atlassian/jira/7.8.2/Dockerfile create mode 100644 atlassian/jira/7.8.2/Makefile create mode 100644 atlassian/jira/7.8.2/README.md create mode 100644 atlassian/jira/7.8.2/entrypoint.sh create mode 100644 atlassian/jira/7.8.4/.docker-repository.yml create mode 100644 atlassian/jira/7.8.4/.dockerignore create mode 100644 atlassian/jira/7.8.4/Dockerfile create mode 100644 atlassian/jira/7.8.4/Makefile create mode 100644 atlassian/jira/7.8.4/README.md create mode 100644 atlassian/jira/7.8.4/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index 20f081af6..06850b2d7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -922,6 +922,32 @@ matrix: - docker build --compress -t epicmorg/jira:7.6.17 atlassian/jira/7.6.17 - docker push epicmorg/jira:7.6.17 +########## + + - name: Jira 7.8.0 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.8.0 atlassian/jira/7.8.0 + - docker push epicmorg/jira:7.8.0 + + - name: Jira 7.8.1 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.8.1 atlassian/jira/7.8.1 + - docker push epicmorg/jira:7.8.1 + + - name: Jira 7.8.2 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.8.2 atlassian/jira/7.8.2 + - docker push epicmorg/jira:7.8.2 + + - name: Jira 7.8.4 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.8.4 atlassian/jira/7.8.4 + - docker push epicmorg/jira:7.8.4 + ########## - name: Jira 7.7.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index a43342e97..5ea92e67f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ * added `Jira 7.5.x`: `7.5.0`, `7.5.1`, `7.5.2`, `7.5.3`, `7.5.4` * added `Jira 7.6.x`: `7.6.0`, `7.6.1`, `7.6.2`, `7.6.3`, `7.6.4`, `7.6.6`, `7.6.7`, `7.6.8`, `7.6.9`, `7.6.10`, `7.6.11`, `7.6.12`, `7.6.13`, `7.6.14`, `7.6.15`, `7.6.16`, `7.6.17` * added `Jira 7.7.x`: `7.7.0`, `7.7.1`, `7.7.2`, `7.7.4` + * added `Jira 7.8.x`: `7.8.0`, `7.8.1`, `7.8.2`, `7.8.4` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/jira/7.8.0/.docker-repository.yml b/atlassian/jira/7.8.0/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.8.0/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.8.0/.dockerignore b/atlassian/jira/7.8.0/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.8.0/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.8.0/Dockerfile b/atlassian/jira/7.8.0/Dockerfile new file mode 100644 index 000000000..02bca0b8f --- /dev/null +++ b/atlassian/jira/7.8.0/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.8.0 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.8.0/Makefile b/atlassian/jira/7.8.0/Makefile new file mode 100644 index 000000000..a8c1c3708 --- /dev/null +++ b/atlassian/jira/7.8.0/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.8.0 . diff --git a/atlassian/jira/7.8.0/README.md b/atlassian/jira/7.8.0/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.8.0/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.8.0/entrypoint.sh b/atlassian/jira/7.8.0/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.8.0/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.8.1/.docker-repository.yml b/atlassian/jira/7.8.1/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.8.1/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.8.1/.dockerignore b/atlassian/jira/7.8.1/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.8.1/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.8.1/Dockerfile b/atlassian/jira/7.8.1/Dockerfile new file mode 100644 index 000000000..598aca639 --- /dev/null +++ b/atlassian/jira/7.8.1/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.8.1 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.8.1/Makefile b/atlassian/jira/7.8.1/Makefile new file mode 100644 index 000000000..15a553644 --- /dev/null +++ b/atlassian/jira/7.8.1/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.8.1 . diff --git a/atlassian/jira/7.8.1/README.md b/atlassian/jira/7.8.1/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.8.1/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.8.1/entrypoint.sh b/atlassian/jira/7.8.1/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.8.1/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.8.2/.docker-repository.yml b/atlassian/jira/7.8.2/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.8.2/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.8.2/.dockerignore b/atlassian/jira/7.8.2/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.8.2/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.8.2/Dockerfile b/atlassian/jira/7.8.2/Dockerfile new file mode 100644 index 000000000..9e8fb7dc4 --- /dev/null +++ b/atlassian/jira/7.8.2/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.8.2 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.8.2/Makefile b/atlassian/jira/7.8.2/Makefile new file mode 100644 index 000000000..7d73c3eaf --- /dev/null +++ b/atlassian/jira/7.8.2/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.8.2 . diff --git a/atlassian/jira/7.8.2/README.md b/atlassian/jira/7.8.2/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.8.2/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.8.2/entrypoint.sh b/atlassian/jira/7.8.2/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.8.2/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.8.4/.docker-repository.yml b/atlassian/jira/7.8.4/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.8.4/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.8.4/.dockerignore b/atlassian/jira/7.8.4/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.8.4/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.8.4/Dockerfile b/atlassian/jira/7.8.4/Dockerfile new file mode 100644 index 000000000..06cc20d95 --- /dev/null +++ b/atlassian/jira/7.8.4/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.8.4 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.8.4/Makefile b/atlassian/jira/7.8.4/Makefile new file mode 100644 index 000000000..13d159ddc --- /dev/null +++ b/atlassian/jira/7.8.4/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.8.4 . diff --git a/atlassian/jira/7.8.4/README.md b/atlassian/jira/7.8.4/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.8.4/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.8.4/entrypoint.sh b/atlassian/jira/7.8.4/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.8.4/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi From 19232ad1cf1ce9d8c8a99a238236b9aa73055425 Mon Sep 17 00:00:00 2001 From: stam Date: Wed, 15 Jan 2020 14:08:34 +0300 Subject: [PATCH 13/50] jira 7.9 --- .travis.yml | 50 ++++--- CHANGELOG.md | 1 + atlassian/jira/7.9.0/.docker-repository.yml | 1 + atlassian/jira/7.9.0/.dockerignore | 3 + atlassian/jira/7.9.0/Dockerfile | 47 ++++++ atlassian/jira/7.9.0/Makefile | 4 + atlassian/jira/7.9.0/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.9.0/entrypoint.sh | 89 ++++++++++++ atlassian/jira/7.9.2/.docker-repository.yml | 1 + atlassian/jira/7.9.2/.dockerignore | 3 + atlassian/jira/7.9.2/Dockerfile | 47 ++++++ atlassian/jira/7.9.2/Makefile | 4 + atlassian/jira/7.9.2/README.md | 151 ++++++++++++++++++++ atlassian/jira/7.9.2/entrypoint.sh | 89 ++++++++++++ 14 files changed, 623 insertions(+), 18 deletions(-) create mode 100644 atlassian/jira/7.9.0/.docker-repository.yml create mode 100644 atlassian/jira/7.9.0/.dockerignore create mode 100644 atlassian/jira/7.9.0/Dockerfile create mode 100644 atlassian/jira/7.9.0/Makefile create mode 100644 atlassian/jira/7.9.0/README.md create mode 100644 atlassian/jira/7.9.0/entrypoint.sh create mode 100644 atlassian/jira/7.9.2/.docker-repository.yml create mode 100644 atlassian/jira/7.9.2/.dockerignore create mode 100644 atlassian/jira/7.9.2/Dockerfile create mode 100644 atlassian/jira/7.9.2/Makefile create mode 100644 atlassian/jira/7.9.2/README.md create mode 100644 atlassian/jira/7.9.2/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index 06850b2d7..9581c0008 100644 --- a/.travis.yml +++ b/.travis.yml @@ -922,6 +922,32 @@ matrix: - docker build --compress -t epicmorg/jira:7.6.17 atlassian/jira/7.6.17 - docker push epicmorg/jira:7.6.17 +########## + + - name: Jira 7.7.0 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.7.0 atlassian/jira/7.7.0 + - docker push epicmorg/jira:7.7.0 + + - name: Jira 7.7.1 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.7.1 atlassian/jira/7.7.1 + - docker push epicmorg/jira:7.7.1 + + - name: Jira 7.7.2 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.7.2 atlassian/jira/7.7.2 + - docker push epicmorg/jira:7.7.2 + + - name: Jira 7.7.4 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.7.4 atlassian/jira/7.7.4 + - docker push epicmorg/jira:7.7.4 + ########## - name: Jira 7.8.0 @@ -950,29 +976,17 @@ matrix: ########## - - name: Jira 7.7.0 + - name: Jira 7.9.0 script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - - docker build --compress -t epicmorg/jira:7.7.0 atlassian/jira/7.7.0 - - docker push epicmorg/jira:7.7.0 + - docker build --compress -t epicmorg/jira:7.9.0 atlassian/jira/7.9.0 + - docker push epicmorg/jira:7.9.0 - - name: Jira 7.7.1 + - name: Jira 7.9.2 script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - - docker build --compress -t epicmorg/jira:7.7.1 atlassian/jira/7.7.1 - - docker push epicmorg/jira:7.7.1 - - - name: Jira 7.7.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - - docker build --compress -t epicmorg/jira:7.7.2 atlassian/jira/7.7.2 - - docker push epicmorg/jira:7.7.2 - - - name: Jira 7.7.4 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - - docker build --compress -t epicmorg/jira:7.7.4 atlassian/jira/7.7.4 - - docker push epicmorg/jira:7.7.4 + - docker build --compress -t epicmorg/jira:7.9.2 atlassian/jira/7.9.2 + - docker push epicmorg/jira:7.9.2 ########## - name: Jira 7.10.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ea92e67f..162f42646 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ * added `Jira 7.6.x`: `7.6.0`, `7.6.1`, `7.6.2`, `7.6.3`, `7.6.4`, `7.6.6`, `7.6.7`, `7.6.8`, `7.6.9`, `7.6.10`, `7.6.11`, `7.6.12`, `7.6.13`, `7.6.14`, `7.6.15`, `7.6.16`, `7.6.17` * added `Jira 7.7.x`: `7.7.0`, `7.7.1`, `7.7.2`, `7.7.4` * added `Jira 7.8.x`: `7.8.0`, `7.8.1`, `7.8.2`, `7.8.4` + * added `Jira 7.9.x`: `7.9.0`, `7.9.2` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/jira/7.9.0/.docker-repository.yml b/atlassian/jira/7.9.0/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.9.0/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.9.0/.dockerignore b/atlassian/jira/7.9.0/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.9.0/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.9.0/Dockerfile b/atlassian/jira/7.9.0/Dockerfile new file mode 100644 index 000000000..3fcc0c8f1 --- /dev/null +++ b/atlassian/jira/7.9.0/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.9.0 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.9.0/Makefile b/atlassian/jira/7.9.0/Makefile new file mode 100644 index 000000000..083bd154b --- /dev/null +++ b/atlassian/jira/7.9.0/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.9.0 . diff --git a/atlassian/jira/7.9.0/README.md b/atlassian/jira/7.9.0/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.9.0/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.9.0/entrypoint.sh b/atlassian/jira/7.9.0/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.9.0/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi diff --git a/atlassian/jira/7.9.2/.docker-repository.yml b/atlassian/jira/7.9.2/.docker-repository.yml new file mode 100644 index 000000000..8dc515604 --- /dev/null +++ b/atlassian/jira/7.9.2/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/jira diff --git a/atlassian/jira/7.9.2/.dockerignore b/atlassian/jira/7.9.2/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/jira/7.9.2/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/jira/7.9.2/Dockerfile b/atlassian/jira/7.9.2/Dockerfile new file mode 100644 index 000000000..ea4dd675b --- /dev/null +++ b/atlassian/jira/7.9.2/Dockerfile @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=7.9.2 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/7.9.2/Makefile b/atlassian/jira/7.9.2/Makefile new file mode 100644 index 000000000..d16c74d5f --- /dev/null +++ b/atlassian/jira/7.9.2/Makefile @@ -0,0 +1,4 @@ +all: jr + +jr: + docker build --compress -t epicmorg/jira:7.9.2 . diff --git a/atlassian/jira/7.9.2/README.md b/atlassian/jira/7.9.2/README.md new file mode 100644 index 000000000..4cab96ead --- /dev/null +++ b/atlassian/jira/7.9.2/README.md @@ -0,0 +1,151 @@ +![Atlassian JIRA](https://www.atlassian.com/dam/wac/legacy/jira_logo_landing.png) + +JIRA Software is a software development tool used by agile teams. + +Learn more about JIRA Software: + +# Overview + +This Docker container makes it easy to get an instance of JIRA Software up and running. + +# Quick Start + +For the `JIRA_HOME` directory that is used to store application data (amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name jiraVolume + $> docker run -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + + +**Success**. JIRA is now available on [http://localhost:8080](http://localhost:8080)* + +Please ensure your container has the necessary resources allocated to it. We recommend 2GiB of memory allocated to accommodate the application server. See [System Requirements](https://confluence.atlassian.com/adminjiraserver071/jira-applications-installation-requirements-802592164.html) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8080` instead._ + +## Memory / Heap Size + +If you need to override JIRA's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 384m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 768m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If JIRA is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/adminjiraserver072/integrating-jira-with-apache-using-ssl-828788158.html), then you need to specify extra options to make JIRA aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which JIRA is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to JIRA, such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for JIRA + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -v jiraVolume:/var/atlassian/application-data/jira --name="jira" -d -p 8080:8080 epicmorg/jira + +## Data Center configuration + +This docker image can be run as part of a [Data Center](https://confluence.atlassian.com/enterprise/jira-data-center-472219731.html) cluster. You can specify the following properties to start Jira as a Data Center node, instead of manually configuring a cluster.properties file, See [Installing Jira Data Center](https://confluence.atlassian.com/adminjiraserver071/installing-jira-data-center-802592197.html) for more information on each property and its possible configuration. + +* `CLUSTERED` (default: false) + + Set 'true' to enable clustering configuration to be used. This will create a **cluster.properties** file inside the container's `$JIRA_HOME` directory. + +* `JIRA_NODE_ID` (default: jira_node_) + + The unique ID for the node. By default, this will include the first eight characters of the Docker container ID, but can be overridden with a custom value. + +* `JIRA_SHARED_HOME` (default: $JIRA_HOME/shared) + + The location of the shared home directory for all Jira nodes. + +* `EHCACHE_PEER_DISCOVERY` (default: default) + + Describes how nodes find each other. + +* `EHCACHE_LISTENER_HOSTNAME` (default: NONE) + + The hostname of the current node for cache communication. Jira Data Center will resolve this this internally if the parameter isn't set. + +* `EHCACHE_LISTENER_PORT` (default: 40001) + + The port the node is going to be listening to. + +* `EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS` (default: 2000) + + The default timeout for the Ehcache listener. + +* `EHCACHE_MULTICAST_ADDRESS` (default: NONE) + + A valid multicast group address. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_PORT` (default: NONE) + + The dedicated port for the multicast heartbeat traffic.Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_TIMETOLIVE` (default: NONE) + + A value between 0 and 255 which determines how far the packets will propagate. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +* `EHCACHE_MULTICAST_HOSTNAME` (default: NONE) + + The hostname or IP of the interface to be used for sending and receiving multicast packets. Required when EHCACHE_PEER_DISCOVERY is set to 'automatic' insted of 'default'. + +# Upgrade + +To upgrade to a more recent version of JIRA you can simply stop the `jira` container and start a new one based on a more recent image: + + $> docker stop jira + $> docker rm jira + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `jira` container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the JIRA home directory. In that case it is sufficient to create a backup archive of the docker volume. + +If you're using an external database, you can configure JIRA to make a backup automatically each night. This will back up the current state, including the database to the `jiraVolume` docker volume, which can then be archived. Alternatively you can backup the database separately, and continue to create a backup archive of the docker volume to back up the JIRA Home directory. + +Read more about data recovery and backups: [https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html](https://confluence.atlassian.com/adminjiraserver071/backing-up-data-802592964.html) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian JIRA Software. Thus `epicmorg/jira:latest` will use the newest version of JIRA available. + +## Versions available + +* `epicmorg/jira:latest` +* `epicmorg/jira:7.10.0` + +# Support + +This Docker container is unsupported and is intended for illustration purposes only. diff --git a/atlassian/jira/7.9.2/entrypoint.sh b/atlassian/jira/7.9.2/entrypoint.sh new file mode 100644 index 000000000..50ee4ecd1 --- /dev/null +++ b/atlassian/jira/7.9.2/entrypoint.sh @@ -0,0 +1,89 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +# Setup Data Center configuration +if [ ! -f "/etc/container_id" ]; then + uuidgen > /etc/container_id +fi +CONTAINER_ID=$(cat /etc/container_id) +CONTAINER_SHORT_ID=${CONTAINER_ID::8} + +: ${CLUSTERED:=false} +: ${JIRA_NODE_ID:=jira_node_${CONTAINER_SHORT_ID}} +: ${JIRA_SHARED_HOME:=${JIRA_HOME}/shared} +: ${EHCACHE_PEER_DISCOVERY:=} +: ${EHCACHE_LISTENER_HOSTNAME:=} +: ${EHCACHE_LISTENER_PORT:=} +: ${EHCACHE_LISTENER_SOCKETTIMEOUTMILLIS:=} +: ${EHCACHE_MULTICAST_ADDRESS:=} +: ${EHCACHE_MULTICAST_PORT:=} +: ${EHCACHE_MULTICAST_TIMETOLIVE:=} +: ${EHCACHE_MULTICAST_HOSTNAME:=} + +# Cleanly set/unset values in cluster.properties +function set_cluster_property { + if [ -z $2 ]; then + if [ -f "${JIRA_HOME}/cluster.properties" ]; then + sed -i -e "/^${1}/d" "${JIRA_HOME}/cluster.properties" + fi + return + fi + if [ ! -f "${JIRA_HOME}/cluster.properties" ]; then + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + elif grep "^${1}" "${JIRA_HOME}/cluster.properties"; then + sed -i -e "s#^${1}=.*#${1}=${2}#g" "${JIRA_HOME}/cluster.properties" + else + echo "${1}=${2}" >> "${JIRA_HOME}/cluster.properties" + fi +} + +if [ "${CLUSTERED}" == "true" ]; then + set_cluster_property "jira.node.id" "${JIRA_NODE_ID}" + set_cluster_property "jira.shared.home" "${JIRA_SHARED_HOME}" + set_cluster_property "ehcache.peer.discovery" "${EHCACHE_PEER_DISCOVERY}" + set_cluster_property "ehcache.listener.hostName" "${EHCACHE_LISTENER_HOSTNAME}" + set_cluster_property "ehcache.listener.port" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.listener.socketTimeoutMillis" "${EHCACHE_LISTENER_PORT}" + set_cluster_property "ehcache.multicast.address" "${EHCACHE_MULTICAST_ADDRESS}" + set_cluster_property "ehcache.multicast.port" "${EHCACHE_MULTICAST_PORT}" + set_cluster_property "ehcache.multicast.timeToLive" "${EHCACHE_MULTICAST_TIMETOLIVE}" + set_cluster_property "ehcache.multicast.hostName" "${EHCACHE_MULTICAST_HOSTNAME}" +fi + + +# Start Jira as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${JIRA_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${JIRA_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${JIRA_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$JIRA_INSTALL_DIR/bin/start-jira.sh $@" +else + exec "$JIRA_INSTALL_DIR/bin/start-jira.sh" "$@" +fi From 94b5c5fff4633abc244bd44fd7e0d92a3b62db79 Mon Sep 17 00:00:00 2001 From: stam Date: Wed, 15 Jan 2020 16:18:11 +0300 Subject: [PATCH 14/50] Bitbucket 6.0 --- .travis.yml | 75 ++++++ CHANGELOG.md | 4 +- .../bitbucket/6.0.0/.docker-repository.yml | 1 + atlassian/bitbucket/6.0.0/.dockerignore | 3 + atlassian/bitbucket/6.0.0/Dockerfile | 45 ++++ atlassian/bitbucket/6.0.0/Makefile | 4 + atlassian/bitbucket/6.0.0/README.md | 216 ++++++++++++++++++ .../bitbucket/6.0.0/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.0.0/entrypoint.sh | 57 +++++ .../bitbucket/6.0.1/.docker-repository.yml | 1 + atlassian/bitbucket/6.0.1/.dockerignore | 3 + atlassian/bitbucket/6.0.1/Dockerfile | 45 ++++ atlassian/bitbucket/6.0.1/Makefile | 4 + atlassian/bitbucket/6.0.1/README.md | 216 ++++++++++++++++++ .../bitbucket/6.0.1/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.0.1/entrypoint.sh | 57 +++++ .../bitbucket/6.0.10/.docker-repository.yml | 1 + atlassian/bitbucket/6.0.10/.dockerignore | 3 + atlassian/bitbucket/6.0.10/Dockerfile | 45 ++++ atlassian/bitbucket/6.0.10/Makefile | 4 + atlassian/bitbucket/6.0.10/README.md | 216 ++++++++++++++++++ .../bitbucket/6.0.10/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.0.10/entrypoint.sh | 57 +++++ .../bitbucket/6.0.11/.docker-repository.yml | 1 + atlassian/bitbucket/6.0.11/.dockerignore | 3 + atlassian/bitbucket/6.0.11/Dockerfile | 45 ++++ atlassian/bitbucket/6.0.11/Makefile | 4 + atlassian/bitbucket/6.0.11/README.md | 216 ++++++++++++++++++ .../bitbucket/6.0.11/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.0.11/entrypoint.sh | 57 +++++ .../bitbucket/6.0.2/.docker-repository.yml | 1 + atlassian/bitbucket/6.0.2/.dockerignore | 3 + atlassian/bitbucket/6.0.2/Dockerfile | 45 ++++ atlassian/bitbucket/6.0.2/Makefile | 4 + atlassian/bitbucket/6.0.2/README.md | 216 ++++++++++++++++++ .../bitbucket/6.0.2/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.0.2/entrypoint.sh | 57 +++++ .../bitbucket/6.0.3/.docker-repository.yml | 1 + atlassian/bitbucket/6.0.3/.dockerignore | 3 + atlassian/bitbucket/6.0.3/Dockerfile | 45 ++++ atlassian/bitbucket/6.0.3/Makefile | 4 + atlassian/bitbucket/6.0.3/README.md | 216 ++++++++++++++++++ .../bitbucket/6.0.3/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.0.3/entrypoint.sh | 57 +++++ .../bitbucket/6.0.4/.docker-repository.yml | 1 + atlassian/bitbucket/6.0.4/.dockerignore | 3 + atlassian/bitbucket/6.0.4/Dockerfile | 45 ++++ atlassian/bitbucket/6.0.4/Makefile | 4 + atlassian/bitbucket/6.0.4/README.md | 216 ++++++++++++++++++ .../bitbucket/6.0.4/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.0.4/entrypoint.sh | 57 +++++ .../bitbucket/6.0.5/.docker-repository.yml | 1 + atlassian/bitbucket/6.0.5/.dockerignore | 3 + atlassian/bitbucket/6.0.5/Dockerfile | 45 ++++ atlassian/bitbucket/6.0.5/Makefile | 4 + atlassian/bitbucket/6.0.5/README.md | 216 ++++++++++++++++++ .../bitbucket/6.0.5/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.0.5/entrypoint.sh | 57 +++++ .../bitbucket/6.0.6/.docker-repository.yml | 1 + atlassian/bitbucket/6.0.6/.dockerignore | 3 + atlassian/bitbucket/6.0.6/Dockerfile | 45 ++++ atlassian/bitbucket/6.0.6/Makefile | 4 + atlassian/bitbucket/6.0.6/README.md | 216 ++++++++++++++++++ .../bitbucket/6.0.6/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.0.6/entrypoint.sh | 57 +++++ .../bitbucket/6.0.7/.docker-repository.yml | 1 + atlassian/bitbucket/6.0.7/.dockerignore | 3 + atlassian/bitbucket/6.0.7/Dockerfile | 45 ++++ atlassian/bitbucket/6.0.7/Makefile | 4 + atlassian/bitbucket/6.0.7/README.md | 216 ++++++++++++++++++ .../bitbucket/6.0.7/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.0.7/entrypoint.sh | 57 +++++ .../bitbucket/6.0.8/.docker-repository.yml | 1 + atlassian/bitbucket/6.0.8/.dockerignore | 3 + atlassian/bitbucket/6.0.8/Dockerfile | 45 ++++ atlassian/bitbucket/6.0.8/Makefile | 4 + atlassian/bitbucket/6.0.8/README.md | 216 ++++++++++++++++++ .../bitbucket/6.0.8/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.0.8/entrypoint.sh | 57 +++++ .../bitbucket/6.0.9/.docker-repository.yml | 1 + atlassian/bitbucket/6.0.9/.dockerignore | 3 + atlassian/bitbucket/6.0.9/Dockerfile | 45 ++++ atlassian/bitbucket/6.0.9/Makefile | 4 + atlassian/bitbucket/6.0.9/README.md | 216 ++++++++++++++++++ .../bitbucket/6.0.9/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.0.9/entrypoint.sh | 57 +++++ atlassian/bitbucket/README.md | 3 +- 87 files changed, 4784 insertions(+), 2 deletions(-) create mode 100644 atlassian/bitbucket/6.0.0/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.0.0/.dockerignore create mode 100644 atlassian/bitbucket/6.0.0/Dockerfile create mode 100644 atlassian/bitbucket/6.0.0/Makefile create mode 100644 atlassian/bitbucket/6.0.0/README.md create mode 100644 atlassian/bitbucket/6.0.0/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.0.0/entrypoint.sh create mode 100644 atlassian/bitbucket/6.0.1/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.0.1/.dockerignore create mode 100644 atlassian/bitbucket/6.0.1/Dockerfile create mode 100644 atlassian/bitbucket/6.0.1/Makefile create mode 100644 atlassian/bitbucket/6.0.1/README.md create mode 100644 atlassian/bitbucket/6.0.1/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.0.1/entrypoint.sh create mode 100644 atlassian/bitbucket/6.0.10/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.0.10/.dockerignore create mode 100644 atlassian/bitbucket/6.0.10/Dockerfile create mode 100644 atlassian/bitbucket/6.0.10/Makefile create mode 100644 atlassian/bitbucket/6.0.10/README.md create mode 100644 atlassian/bitbucket/6.0.10/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.0.10/entrypoint.sh create mode 100644 atlassian/bitbucket/6.0.11/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.0.11/.dockerignore create mode 100644 atlassian/bitbucket/6.0.11/Dockerfile create mode 100644 atlassian/bitbucket/6.0.11/Makefile create mode 100644 atlassian/bitbucket/6.0.11/README.md create mode 100644 atlassian/bitbucket/6.0.11/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.0.11/entrypoint.sh create mode 100644 atlassian/bitbucket/6.0.2/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.0.2/.dockerignore create mode 100644 atlassian/bitbucket/6.0.2/Dockerfile create mode 100644 atlassian/bitbucket/6.0.2/Makefile create mode 100644 atlassian/bitbucket/6.0.2/README.md create mode 100644 atlassian/bitbucket/6.0.2/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.0.2/entrypoint.sh create mode 100644 atlassian/bitbucket/6.0.3/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.0.3/.dockerignore create mode 100644 atlassian/bitbucket/6.0.3/Dockerfile create mode 100644 atlassian/bitbucket/6.0.3/Makefile create mode 100644 atlassian/bitbucket/6.0.3/README.md create mode 100644 atlassian/bitbucket/6.0.3/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.0.3/entrypoint.sh create mode 100644 atlassian/bitbucket/6.0.4/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.0.4/.dockerignore create mode 100644 atlassian/bitbucket/6.0.4/Dockerfile create mode 100644 atlassian/bitbucket/6.0.4/Makefile create mode 100644 atlassian/bitbucket/6.0.4/README.md create mode 100644 atlassian/bitbucket/6.0.4/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.0.4/entrypoint.sh create mode 100644 atlassian/bitbucket/6.0.5/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.0.5/.dockerignore create mode 100644 atlassian/bitbucket/6.0.5/Dockerfile create mode 100644 atlassian/bitbucket/6.0.5/Makefile create mode 100644 atlassian/bitbucket/6.0.5/README.md create mode 100644 atlassian/bitbucket/6.0.5/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.0.5/entrypoint.sh create mode 100644 atlassian/bitbucket/6.0.6/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.0.6/.dockerignore create mode 100644 atlassian/bitbucket/6.0.6/Dockerfile create mode 100644 atlassian/bitbucket/6.0.6/Makefile create mode 100644 atlassian/bitbucket/6.0.6/README.md create mode 100644 atlassian/bitbucket/6.0.6/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.0.6/entrypoint.sh create mode 100644 atlassian/bitbucket/6.0.7/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.0.7/.dockerignore create mode 100644 atlassian/bitbucket/6.0.7/Dockerfile create mode 100644 atlassian/bitbucket/6.0.7/Makefile create mode 100644 atlassian/bitbucket/6.0.7/README.md create mode 100644 atlassian/bitbucket/6.0.7/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.0.7/entrypoint.sh create mode 100644 atlassian/bitbucket/6.0.8/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.0.8/.dockerignore create mode 100644 atlassian/bitbucket/6.0.8/Dockerfile create mode 100644 atlassian/bitbucket/6.0.8/Makefile create mode 100644 atlassian/bitbucket/6.0.8/README.md create mode 100644 atlassian/bitbucket/6.0.8/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.0.8/entrypoint.sh create mode 100644 atlassian/bitbucket/6.0.9/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.0.9/.dockerignore create mode 100644 atlassian/bitbucket/6.0.9/Dockerfile create mode 100644 atlassian/bitbucket/6.0.9/Makefile create mode 100644 atlassian/bitbucket/6.0.9/README.md create mode 100644 atlassian/bitbucket/6.0.9/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.0.9/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index 9581c0008..bff970f06 100644 --- a/.travis.yml +++ b/.travis.yml @@ -145,6 +145,81 @@ matrix: ######################################### #### Our Bitbucket images ######################################### + + - name: Bitbucket 6.0.0 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.0.0 atlassian/bitbucket/6.0.0 + - docker push epicmorg/bitbucket:6.0.0 + + - name: Bitbucket 6.0.1 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.0.1 atlassian/bitbucket/6.0.1 + - docker push epicmorg/bitbucket:6.0.1 + + - name: Bitbucket 6.0.2 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.0.2 atlassian/bitbucket/6.0.2 + - docker push epicmorg/bitbucket:6.0.2 + + - name: Bitbucket 6.0.3 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.0.3 atlassian/bitbucket/6.0.3 + - docker push epicmorg/bitbucket:6.0.3 + + - name: Bitbucket 6.0.4 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.0.4 atlassian/bitbucket/6.0.4 + - docker push epicmorg/bitbucket:6.0.4 + + - name: Bitbucket 6.0.5 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.0.5 atlassian/bitbucket/6.0.5 + - docker push epicmorg/bitbucket:6.0.5 + + - name: Bitbucket 6.0.6 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.0.6 atlassian/bitbucket/6.0.6 + - docker push epicmorg/bitbucket:6.0.6 + + - name: Bitbucket 6.0.7 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.0.7 atlassian/bitbucket/6.0.7 + - docker push epicmorg/bitbucket:6.0.7 + + - name: Bitbucket 6.0.8 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.0.8 atlassian/bitbucket/6.0.8 + - docker push epicmorg/bitbucket:6.0.8 + + - name: Bitbucket 6.0.9 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.0.9 atlassian/bitbucket/6.0.9 + - docker push epicmorg/bitbucket:6.0.9 + + - name: Bitbucket 6.0.10 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.0.10 atlassian/bitbucket/6.0.10 + - docker push epicmorg/bitbucket:6.0.10 + + - name: Bitbucket 6.0.11 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.0.11 atlassian/bitbucket/6.0.11 + - docker push epicmorg/bitbucket:6.0.11 + +########## + - name: Bitbucket 6.2.0 script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin diff --git a/CHANGELOG.md b/CHANGELOG.md index 162f42646..5d5d8fbc3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ## Changelog -* 01/13/2020 + +* `January 2020` (01/13/2020 - 01/15/2020) * separated `base` images to `prod`, `prod:jdk8`, `prod:jdk11`, `devel`, `devel:jdk8`, `devel:jdk11` * teamcity - `devel:jdk11` * updated current atlassian contaners: @@ -18,6 +19,7 @@ * added `Jira 7.7.x`: `7.7.0`, `7.7.1`, `7.7.2`, `7.7.4` * added `Jira 7.8.x`: `7.8.0`, `7.8.1`, `7.8.2`, `7.8.4` * added `Jira 7.9.x`: `7.9.0`, `7.9.2` + * added `Bitbucket 6.0.x`: `6.0.0`, `6.0.1`, `6.0.2`, `6.0.3`, `6.0.4`, `6.0.5`, `6.0.6`, `6.0.7`, `6.0.8`, `6.0.9`, `6.0.10`, `6.0.11` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/bitbucket/6.0.0/.docker-repository.yml b/atlassian/bitbucket/6.0.0/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.0.0/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.0.0/.dockerignore b/atlassian/bitbucket/6.0.0/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.0.0/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.0.0/Dockerfile b/atlassian/bitbucket/6.0.0/Dockerfile new file mode 100644 index 000000000..e2d740f96 --- /dev/null +++ b/atlassian/bitbucket/6.0.0/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.0.0 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.0.0/Makefile b/atlassian/bitbucket/6.0.0/Makefile new file mode 100644 index 000000000..be9158a83 --- /dev/null +++ b/atlassian/bitbucket/6.0.0/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.0.0 . diff --git a/atlassian/bitbucket/6.0.0/README.md b/atlassian/bitbucket/6.0.0/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.0.0/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.0.0/bitbucket-pipelines.yml b/atlassian/bitbucket/6.0.0/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.0.0/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.0.0/entrypoint.sh b/atlassian/bitbucket/6.0.0/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.0.0/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.0.1/.docker-repository.yml b/atlassian/bitbucket/6.0.1/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.0.1/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.0.1/.dockerignore b/atlassian/bitbucket/6.0.1/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.0.1/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.0.1/Dockerfile b/atlassian/bitbucket/6.0.1/Dockerfile new file mode 100644 index 000000000..062d04b0a --- /dev/null +++ b/atlassian/bitbucket/6.0.1/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.0.1 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.0.1/Makefile b/atlassian/bitbucket/6.0.1/Makefile new file mode 100644 index 000000000..22fb605d9 --- /dev/null +++ b/atlassian/bitbucket/6.0.1/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.0.1 . diff --git a/atlassian/bitbucket/6.0.1/README.md b/atlassian/bitbucket/6.0.1/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.0.1/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.0.1/bitbucket-pipelines.yml b/atlassian/bitbucket/6.0.1/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.0.1/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.0.1/entrypoint.sh b/atlassian/bitbucket/6.0.1/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.0.1/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.0.10/.docker-repository.yml b/atlassian/bitbucket/6.0.10/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.0.10/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.0.10/.dockerignore b/atlassian/bitbucket/6.0.10/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.0.10/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.0.10/Dockerfile b/atlassian/bitbucket/6.0.10/Dockerfile new file mode 100644 index 000000000..7e46dc3d5 --- /dev/null +++ b/atlassian/bitbucket/6.0.10/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.0.10 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.0.10/Makefile b/atlassian/bitbucket/6.0.10/Makefile new file mode 100644 index 000000000..c88d5aae1 --- /dev/null +++ b/atlassian/bitbucket/6.0.10/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.0.10 . diff --git a/atlassian/bitbucket/6.0.10/README.md b/atlassian/bitbucket/6.0.10/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.0.10/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.0.10/bitbucket-pipelines.yml b/atlassian/bitbucket/6.0.10/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.0.10/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.0.10/entrypoint.sh b/atlassian/bitbucket/6.0.10/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.0.10/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.0.11/.docker-repository.yml b/atlassian/bitbucket/6.0.11/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.0.11/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.0.11/.dockerignore b/atlassian/bitbucket/6.0.11/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.0.11/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.0.11/Dockerfile b/atlassian/bitbucket/6.0.11/Dockerfile new file mode 100644 index 000000000..ff9ce227c --- /dev/null +++ b/atlassian/bitbucket/6.0.11/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.0.11 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.0.11/Makefile b/atlassian/bitbucket/6.0.11/Makefile new file mode 100644 index 000000000..bf4d23baf --- /dev/null +++ b/atlassian/bitbucket/6.0.11/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.0.11 . diff --git a/atlassian/bitbucket/6.0.11/README.md b/atlassian/bitbucket/6.0.11/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.0.11/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.0.11/bitbucket-pipelines.yml b/atlassian/bitbucket/6.0.11/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.0.11/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.0.11/entrypoint.sh b/atlassian/bitbucket/6.0.11/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.0.11/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.0.2/.docker-repository.yml b/atlassian/bitbucket/6.0.2/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.0.2/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.0.2/.dockerignore b/atlassian/bitbucket/6.0.2/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.0.2/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.0.2/Dockerfile b/atlassian/bitbucket/6.0.2/Dockerfile new file mode 100644 index 000000000..b2787c46d --- /dev/null +++ b/atlassian/bitbucket/6.0.2/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.0.2 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.0.2/Makefile b/atlassian/bitbucket/6.0.2/Makefile new file mode 100644 index 000000000..d075dbfb7 --- /dev/null +++ b/atlassian/bitbucket/6.0.2/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.0.2 . diff --git a/atlassian/bitbucket/6.0.2/README.md b/atlassian/bitbucket/6.0.2/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.0.2/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.0.2/bitbucket-pipelines.yml b/atlassian/bitbucket/6.0.2/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.0.2/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.0.2/entrypoint.sh b/atlassian/bitbucket/6.0.2/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.0.2/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.0.3/.docker-repository.yml b/atlassian/bitbucket/6.0.3/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.0.3/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.0.3/.dockerignore b/atlassian/bitbucket/6.0.3/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.0.3/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.0.3/Dockerfile b/atlassian/bitbucket/6.0.3/Dockerfile new file mode 100644 index 000000000..b344ab06c --- /dev/null +++ b/atlassian/bitbucket/6.0.3/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.0.3 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.0.3/Makefile b/atlassian/bitbucket/6.0.3/Makefile new file mode 100644 index 000000000..ac7f26c2a --- /dev/null +++ b/atlassian/bitbucket/6.0.3/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.0.3 . diff --git a/atlassian/bitbucket/6.0.3/README.md b/atlassian/bitbucket/6.0.3/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.0.3/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.0.3/bitbucket-pipelines.yml b/atlassian/bitbucket/6.0.3/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.0.3/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.0.3/entrypoint.sh b/atlassian/bitbucket/6.0.3/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.0.3/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.0.4/.docker-repository.yml b/atlassian/bitbucket/6.0.4/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.0.4/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.0.4/.dockerignore b/atlassian/bitbucket/6.0.4/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.0.4/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.0.4/Dockerfile b/atlassian/bitbucket/6.0.4/Dockerfile new file mode 100644 index 000000000..caefc5aff --- /dev/null +++ b/atlassian/bitbucket/6.0.4/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.0.4 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.0.4/Makefile b/atlassian/bitbucket/6.0.4/Makefile new file mode 100644 index 000000000..160c185a1 --- /dev/null +++ b/atlassian/bitbucket/6.0.4/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.0.4 . diff --git a/atlassian/bitbucket/6.0.4/README.md b/atlassian/bitbucket/6.0.4/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.0.4/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.0.4/bitbucket-pipelines.yml b/atlassian/bitbucket/6.0.4/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.0.4/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.0.4/entrypoint.sh b/atlassian/bitbucket/6.0.4/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.0.4/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.0.5/.docker-repository.yml b/atlassian/bitbucket/6.0.5/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.0.5/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.0.5/.dockerignore b/atlassian/bitbucket/6.0.5/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.0.5/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.0.5/Dockerfile b/atlassian/bitbucket/6.0.5/Dockerfile new file mode 100644 index 000000000..38859b28e --- /dev/null +++ b/atlassian/bitbucket/6.0.5/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.0.5 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.0.5/Makefile b/atlassian/bitbucket/6.0.5/Makefile new file mode 100644 index 000000000..052ebd835 --- /dev/null +++ b/atlassian/bitbucket/6.0.5/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.0.5 . diff --git a/atlassian/bitbucket/6.0.5/README.md b/atlassian/bitbucket/6.0.5/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.0.5/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.0.5/bitbucket-pipelines.yml b/atlassian/bitbucket/6.0.5/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.0.5/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.0.5/entrypoint.sh b/atlassian/bitbucket/6.0.5/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.0.5/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.0.6/.docker-repository.yml b/atlassian/bitbucket/6.0.6/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.0.6/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.0.6/.dockerignore b/atlassian/bitbucket/6.0.6/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.0.6/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.0.6/Dockerfile b/atlassian/bitbucket/6.0.6/Dockerfile new file mode 100644 index 000000000..6dcc7175d --- /dev/null +++ b/atlassian/bitbucket/6.0.6/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.0.6 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.0.6/Makefile b/atlassian/bitbucket/6.0.6/Makefile new file mode 100644 index 000000000..b9480fdfb --- /dev/null +++ b/atlassian/bitbucket/6.0.6/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.0.6 . diff --git a/atlassian/bitbucket/6.0.6/README.md b/atlassian/bitbucket/6.0.6/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.0.6/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.0.6/bitbucket-pipelines.yml b/atlassian/bitbucket/6.0.6/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.0.6/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.0.6/entrypoint.sh b/atlassian/bitbucket/6.0.6/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.0.6/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.0.7/.docker-repository.yml b/atlassian/bitbucket/6.0.7/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.0.7/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.0.7/.dockerignore b/atlassian/bitbucket/6.0.7/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.0.7/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.0.7/Dockerfile b/atlassian/bitbucket/6.0.7/Dockerfile new file mode 100644 index 000000000..c51b46a3f --- /dev/null +++ b/atlassian/bitbucket/6.0.7/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.0.7 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.0.7/Makefile b/atlassian/bitbucket/6.0.7/Makefile new file mode 100644 index 000000000..f090d535f --- /dev/null +++ b/atlassian/bitbucket/6.0.7/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.0.7 . diff --git a/atlassian/bitbucket/6.0.7/README.md b/atlassian/bitbucket/6.0.7/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.0.7/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.0.7/bitbucket-pipelines.yml b/atlassian/bitbucket/6.0.7/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.0.7/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.0.7/entrypoint.sh b/atlassian/bitbucket/6.0.7/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.0.7/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.0.8/.docker-repository.yml b/atlassian/bitbucket/6.0.8/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.0.8/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.0.8/.dockerignore b/atlassian/bitbucket/6.0.8/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.0.8/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.0.8/Dockerfile b/atlassian/bitbucket/6.0.8/Dockerfile new file mode 100644 index 000000000..ba2e26bba --- /dev/null +++ b/atlassian/bitbucket/6.0.8/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.0.8 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.0.8/Makefile b/atlassian/bitbucket/6.0.8/Makefile new file mode 100644 index 000000000..0b332c38d --- /dev/null +++ b/atlassian/bitbucket/6.0.8/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.0.8 . diff --git a/atlassian/bitbucket/6.0.8/README.md b/atlassian/bitbucket/6.0.8/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.0.8/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.0.8/bitbucket-pipelines.yml b/atlassian/bitbucket/6.0.8/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.0.8/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.0.8/entrypoint.sh b/atlassian/bitbucket/6.0.8/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.0.8/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.0.9/.docker-repository.yml b/atlassian/bitbucket/6.0.9/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.0.9/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.0.9/.dockerignore b/atlassian/bitbucket/6.0.9/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.0.9/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.0.9/Dockerfile b/atlassian/bitbucket/6.0.9/Dockerfile new file mode 100644 index 000000000..96aa8d176 --- /dev/null +++ b/atlassian/bitbucket/6.0.9/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.0.9 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.0.9/Makefile b/atlassian/bitbucket/6.0.9/Makefile new file mode 100644 index 000000000..0d12fedd1 --- /dev/null +++ b/atlassian/bitbucket/6.0.9/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.0.9 . diff --git a/atlassian/bitbucket/6.0.9/README.md b/atlassian/bitbucket/6.0.9/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.0.9/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.0.9/bitbucket-pipelines.yml b/atlassian/bitbucket/6.0.9/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.0.9/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.0.9/entrypoint.sh b/atlassian/bitbucket/6.0.9/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.0.9/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/README.md b/atlassian/bitbucket/README.md index 9e959e8e6..d7ad505e3 100644 --- a/atlassian/bitbucket/README.md +++ b/atlassian/bitbucket/README.md @@ -1,9 +1,10 @@ # [Atlassian Enterprise releases](https://confluence.atlassian.com/enterprise/atlassian-enterprise-releases-948227420.html) ## Build info + All presented images avalible on our repo in docker hub. ## LTS releases: -* Bitbucket have no LTS releases +* Latest version of `Bitbucket` is `6.10` ------- From 984d1e7582624ad867a00722ff3db510916fb6ce Mon Sep 17 00:00:00 2001 From: stam Date: Wed, 15 Jan 2020 16:25:06 +0300 Subject: [PATCH 15/50] Bitbucket 6.1 --- .travis.yml | 62 +++++ CHANGELOG.md | 1 + .../bitbucket/6.1.0/.docker-repository.yml | 1 + atlassian/bitbucket/6.1.0/.dockerignore | 3 + atlassian/bitbucket/6.1.0/Dockerfile | 45 ++++ atlassian/bitbucket/6.1.0/Makefile | 4 + atlassian/bitbucket/6.1.0/README.md | 216 ++++++++++++++++++ .../bitbucket/6.1.0/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.1.0/entrypoint.sh | 57 +++++ .../bitbucket/6.1.1/.docker-repository.yml | 1 + atlassian/bitbucket/6.1.1/.dockerignore | 3 + atlassian/bitbucket/6.1.1/Dockerfile | 45 ++++ atlassian/bitbucket/6.1.1/Makefile | 4 + atlassian/bitbucket/6.1.1/README.md | 216 ++++++++++++++++++ .../bitbucket/6.1.1/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.1.1/entrypoint.sh | 57 +++++ .../bitbucket/6.1.2/.docker-repository.yml | 1 + atlassian/bitbucket/6.1.2/.dockerignore | 3 + atlassian/bitbucket/6.1.2/Dockerfile | 45 ++++ atlassian/bitbucket/6.1.2/Makefile | 4 + atlassian/bitbucket/6.1.2/README.md | 216 ++++++++++++++++++ .../bitbucket/6.1.2/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.1.2/entrypoint.sh | 57 +++++ .../bitbucket/6.1.3/.docker-repository.yml | 1 + atlassian/bitbucket/6.1.3/.dockerignore | 3 + atlassian/bitbucket/6.1.3/Dockerfile | 45 ++++ atlassian/bitbucket/6.1.3/Makefile | 4 + atlassian/bitbucket/6.1.3/README.md | 216 ++++++++++++++++++ .../bitbucket/6.1.3/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.1.3/entrypoint.sh | 57 +++++ .../bitbucket/6.1.4/.docker-repository.yml | 1 + atlassian/bitbucket/6.1.4/.dockerignore | 3 + atlassian/bitbucket/6.1.4/Dockerfile | 45 ++++ atlassian/bitbucket/6.1.4/Makefile | 4 + atlassian/bitbucket/6.1.4/README.md | 216 ++++++++++++++++++ .../bitbucket/6.1.4/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.1.4/entrypoint.sh | 57 +++++ .../bitbucket/6.1.5/.docker-repository.yml | 1 + atlassian/bitbucket/6.1.5/.dockerignore | 3 + atlassian/bitbucket/6.1.5/Dockerfile | 45 ++++ atlassian/bitbucket/6.1.5/Makefile | 4 + atlassian/bitbucket/6.1.5/README.md | 216 ++++++++++++++++++ .../bitbucket/6.1.5/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.1.5/entrypoint.sh | 57 +++++ .../bitbucket/6.1.6/.docker-repository.yml | 1 + atlassian/bitbucket/6.1.6/.dockerignore | 3 + atlassian/bitbucket/6.1.6/Dockerfile | 45 ++++ atlassian/bitbucket/6.1.6/Makefile | 4 + atlassian/bitbucket/6.1.6/README.md | 216 ++++++++++++++++++ .../bitbucket/6.1.6/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.1.6/entrypoint.sh | 57 +++++ .../bitbucket/6.1.7/.docker-repository.yml | 1 + atlassian/bitbucket/6.1.7/.dockerignore | 3 + atlassian/bitbucket/6.1.7/Dockerfile | 45 ++++ atlassian/bitbucket/6.1.7/Makefile | 4 + atlassian/bitbucket/6.1.7/README.md | 216 ++++++++++++++++++ .../bitbucket/6.1.7/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.1.7/entrypoint.sh | 57 +++++ .../bitbucket/6.1.8/.docker-repository.yml | 1 + atlassian/bitbucket/6.1.8/.dockerignore | 3 + atlassian/bitbucket/6.1.8/Dockerfile | 45 ++++ atlassian/bitbucket/6.1.8/Makefile | 4 + atlassian/bitbucket/6.1.8/README.md | 216 ++++++++++++++++++ .../bitbucket/6.1.8/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.1.8/entrypoint.sh | 57 +++++ .../bitbucket/6.1.9/.docker-repository.yml | 1 + atlassian/bitbucket/6.1.9/.dockerignore | 3 + atlassian/bitbucket/6.1.9/Dockerfile | 45 ++++ atlassian/bitbucket/6.1.9/Makefile | 4 + atlassian/bitbucket/6.1.9/README.md | 216 ++++++++++++++++++ .../bitbucket/6.1.9/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.1.9/entrypoint.sh | 57 +++++ 72 files changed, 3983 insertions(+) create mode 100644 atlassian/bitbucket/6.1.0/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.1.0/.dockerignore create mode 100644 atlassian/bitbucket/6.1.0/Dockerfile create mode 100644 atlassian/bitbucket/6.1.0/Makefile create mode 100644 atlassian/bitbucket/6.1.0/README.md create mode 100644 atlassian/bitbucket/6.1.0/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.1.0/entrypoint.sh create mode 100644 atlassian/bitbucket/6.1.1/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.1.1/.dockerignore create mode 100644 atlassian/bitbucket/6.1.1/Dockerfile create mode 100644 atlassian/bitbucket/6.1.1/Makefile create mode 100644 atlassian/bitbucket/6.1.1/README.md create mode 100644 atlassian/bitbucket/6.1.1/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.1.1/entrypoint.sh create mode 100644 atlassian/bitbucket/6.1.2/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.1.2/.dockerignore create mode 100644 atlassian/bitbucket/6.1.2/Dockerfile create mode 100644 atlassian/bitbucket/6.1.2/Makefile create mode 100644 atlassian/bitbucket/6.1.2/README.md create mode 100644 atlassian/bitbucket/6.1.2/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.1.2/entrypoint.sh create mode 100644 atlassian/bitbucket/6.1.3/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.1.3/.dockerignore create mode 100644 atlassian/bitbucket/6.1.3/Dockerfile create mode 100644 atlassian/bitbucket/6.1.3/Makefile create mode 100644 atlassian/bitbucket/6.1.3/README.md create mode 100644 atlassian/bitbucket/6.1.3/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.1.3/entrypoint.sh create mode 100644 atlassian/bitbucket/6.1.4/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.1.4/.dockerignore create mode 100644 atlassian/bitbucket/6.1.4/Dockerfile create mode 100644 atlassian/bitbucket/6.1.4/Makefile create mode 100644 atlassian/bitbucket/6.1.4/README.md create mode 100644 atlassian/bitbucket/6.1.4/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.1.4/entrypoint.sh create mode 100644 atlassian/bitbucket/6.1.5/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.1.5/.dockerignore create mode 100644 atlassian/bitbucket/6.1.5/Dockerfile create mode 100644 atlassian/bitbucket/6.1.5/Makefile create mode 100644 atlassian/bitbucket/6.1.5/README.md create mode 100644 atlassian/bitbucket/6.1.5/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.1.5/entrypoint.sh create mode 100644 atlassian/bitbucket/6.1.6/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.1.6/.dockerignore create mode 100644 atlassian/bitbucket/6.1.6/Dockerfile create mode 100644 atlassian/bitbucket/6.1.6/Makefile create mode 100644 atlassian/bitbucket/6.1.6/README.md create mode 100644 atlassian/bitbucket/6.1.6/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.1.6/entrypoint.sh create mode 100644 atlassian/bitbucket/6.1.7/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.1.7/.dockerignore create mode 100644 atlassian/bitbucket/6.1.7/Dockerfile create mode 100644 atlassian/bitbucket/6.1.7/Makefile create mode 100644 atlassian/bitbucket/6.1.7/README.md create mode 100644 atlassian/bitbucket/6.1.7/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.1.7/entrypoint.sh create mode 100644 atlassian/bitbucket/6.1.8/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.1.8/.dockerignore create mode 100644 atlassian/bitbucket/6.1.8/Dockerfile create mode 100644 atlassian/bitbucket/6.1.8/Makefile create mode 100644 atlassian/bitbucket/6.1.8/README.md create mode 100644 atlassian/bitbucket/6.1.8/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.1.8/entrypoint.sh create mode 100644 atlassian/bitbucket/6.1.9/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.1.9/.dockerignore create mode 100644 atlassian/bitbucket/6.1.9/Dockerfile create mode 100644 atlassian/bitbucket/6.1.9/Makefile create mode 100644 atlassian/bitbucket/6.1.9/README.md create mode 100644 atlassian/bitbucket/6.1.9/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.1.9/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index bff970f06..59360270c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -218,6 +218,68 @@ matrix: - docker build --compress -t epicmorg/bitbucket:6.0.11 atlassian/bitbucket/6.0.11 - docker push epicmorg/bitbucket:6.0.11 +########## + + - name: Bitbucket 6.1.0 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.1.0 atlassian/bitbucket/6.1.0 + - docker push epicmorg/bitbucket:6.1.0 + + - name: Bitbucket 6.1.1 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.1.1 atlassian/bitbucket/6.1.1 + - docker push epicmorg/bitbucket:6.1.1 + + - name: Bitbucket 6.1.2 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.1.2 atlassian/bitbucket/6.1.2 + - docker push epicmorg/bitbucket:6.1.2 + + - name: Bitbucket 6.1.3 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.1.3 atlassian/bitbucket/6.1.3 + - docker push epicmorg/bitbucket:6.1.3 + + - name: Bitbucket 6.1.4 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.1.4 atlassian/bitbucket/6.1.4 + - docker push epicmorg/bitbucket:6.1.4 + + - name: Bitbucket 6.1.5 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.1.5 atlassian/bitbucket/6.1.5 + - docker push epicmorg/bitbucket:6.1.5 + + - name: Bitbucket 6.1.6 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.1.6 atlassian/bitbucket/6.1.6 + - docker push epicmorg/bitbucket:6.1.6 + + - name: Bitbucket 6.1.7 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.1.7 atlassian/bitbucket/6.1.7 + - docker push epicmorg/bitbucket:6.1.7 + + - name: Bitbucket 6.1.8 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.1.8 atlassian/bitbucket/6.1.8 + - docker push epicmorg/bitbucket:6.1.8 + + - name: Bitbucket 6.1.9 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.1.9 atlassian/bitbucket/6.1.9 + - docker push epicmorg/bitbucket:6.1.9 + ########## - name: Bitbucket 6.2.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d5d8fbc3..2a1315d37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ * added `Jira 7.8.x`: `7.8.0`, `7.8.1`, `7.8.2`, `7.8.4` * added `Jira 7.9.x`: `7.9.0`, `7.9.2` * added `Bitbucket 6.0.x`: `6.0.0`, `6.0.1`, `6.0.2`, `6.0.3`, `6.0.4`, `6.0.5`, `6.0.6`, `6.0.7`, `6.0.8`, `6.0.9`, `6.0.10`, `6.0.11` + * added `Bitbucket 6.1.x`: `6.1.0`, `6.1.1`, `6.1.2`, `6.1.3`, `6.1.4`, `6.1.5`, `6.1.6`, `6.1.7`, `6.1.8`, `6.1.9` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/bitbucket/6.1.0/.docker-repository.yml b/atlassian/bitbucket/6.1.0/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.1.0/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.1.0/.dockerignore b/atlassian/bitbucket/6.1.0/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.1.0/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.1.0/Dockerfile b/atlassian/bitbucket/6.1.0/Dockerfile new file mode 100644 index 000000000..3d877d7dc --- /dev/null +++ b/atlassian/bitbucket/6.1.0/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.1.0 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.1.0/Makefile b/atlassian/bitbucket/6.1.0/Makefile new file mode 100644 index 000000000..8b4a0b2e6 --- /dev/null +++ b/atlassian/bitbucket/6.1.0/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.1.0 . diff --git a/atlassian/bitbucket/6.1.0/README.md b/atlassian/bitbucket/6.1.0/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.1.0/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.1.0/bitbucket-pipelines.yml b/atlassian/bitbucket/6.1.0/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.1.0/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.1.0/entrypoint.sh b/atlassian/bitbucket/6.1.0/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.1.0/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.1.1/.docker-repository.yml b/atlassian/bitbucket/6.1.1/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.1.1/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.1.1/.dockerignore b/atlassian/bitbucket/6.1.1/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.1.1/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.1.1/Dockerfile b/atlassian/bitbucket/6.1.1/Dockerfile new file mode 100644 index 000000000..7cd3f13f1 --- /dev/null +++ b/atlassian/bitbucket/6.1.1/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.1.1 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.1.1/Makefile b/atlassian/bitbucket/6.1.1/Makefile new file mode 100644 index 000000000..c23cff52c --- /dev/null +++ b/atlassian/bitbucket/6.1.1/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.1.1 . diff --git a/atlassian/bitbucket/6.1.1/README.md b/atlassian/bitbucket/6.1.1/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.1.1/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.1.1/bitbucket-pipelines.yml b/atlassian/bitbucket/6.1.1/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.1.1/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.1.1/entrypoint.sh b/atlassian/bitbucket/6.1.1/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.1.1/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.1.2/.docker-repository.yml b/atlassian/bitbucket/6.1.2/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.1.2/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.1.2/.dockerignore b/atlassian/bitbucket/6.1.2/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.1.2/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.1.2/Dockerfile b/atlassian/bitbucket/6.1.2/Dockerfile new file mode 100644 index 000000000..34a9a0c08 --- /dev/null +++ b/atlassian/bitbucket/6.1.2/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.1.2 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.1.2/Makefile b/atlassian/bitbucket/6.1.2/Makefile new file mode 100644 index 000000000..eab88f151 --- /dev/null +++ b/atlassian/bitbucket/6.1.2/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.1.2 . diff --git a/atlassian/bitbucket/6.1.2/README.md b/atlassian/bitbucket/6.1.2/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.1.2/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.1.2/bitbucket-pipelines.yml b/atlassian/bitbucket/6.1.2/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.1.2/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.1.2/entrypoint.sh b/atlassian/bitbucket/6.1.2/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.1.2/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.1.3/.docker-repository.yml b/atlassian/bitbucket/6.1.3/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.1.3/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.1.3/.dockerignore b/atlassian/bitbucket/6.1.3/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.1.3/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.1.3/Dockerfile b/atlassian/bitbucket/6.1.3/Dockerfile new file mode 100644 index 000000000..43807d731 --- /dev/null +++ b/atlassian/bitbucket/6.1.3/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.1.3 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.1.3/Makefile b/atlassian/bitbucket/6.1.3/Makefile new file mode 100644 index 000000000..e19e01b55 --- /dev/null +++ b/atlassian/bitbucket/6.1.3/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.1.3 . diff --git a/atlassian/bitbucket/6.1.3/README.md b/atlassian/bitbucket/6.1.3/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.1.3/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.1.3/bitbucket-pipelines.yml b/atlassian/bitbucket/6.1.3/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.1.3/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.1.3/entrypoint.sh b/atlassian/bitbucket/6.1.3/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.1.3/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.1.4/.docker-repository.yml b/atlassian/bitbucket/6.1.4/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.1.4/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.1.4/.dockerignore b/atlassian/bitbucket/6.1.4/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.1.4/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.1.4/Dockerfile b/atlassian/bitbucket/6.1.4/Dockerfile new file mode 100644 index 000000000..e4a2add7e --- /dev/null +++ b/atlassian/bitbucket/6.1.4/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.1.4 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.1.4/Makefile b/atlassian/bitbucket/6.1.4/Makefile new file mode 100644 index 000000000..1c3aad0c4 --- /dev/null +++ b/atlassian/bitbucket/6.1.4/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.1.4 . diff --git a/atlassian/bitbucket/6.1.4/README.md b/atlassian/bitbucket/6.1.4/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.1.4/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.1.4/bitbucket-pipelines.yml b/atlassian/bitbucket/6.1.4/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.1.4/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.1.4/entrypoint.sh b/atlassian/bitbucket/6.1.4/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.1.4/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.1.5/.docker-repository.yml b/atlassian/bitbucket/6.1.5/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.1.5/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.1.5/.dockerignore b/atlassian/bitbucket/6.1.5/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.1.5/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.1.5/Dockerfile b/atlassian/bitbucket/6.1.5/Dockerfile new file mode 100644 index 000000000..40ca9f3d1 --- /dev/null +++ b/atlassian/bitbucket/6.1.5/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.1.5 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.1.5/Makefile b/atlassian/bitbucket/6.1.5/Makefile new file mode 100644 index 000000000..9413cfb4d --- /dev/null +++ b/atlassian/bitbucket/6.1.5/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.1.5 . diff --git a/atlassian/bitbucket/6.1.5/README.md b/atlassian/bitbucket/6.1.5/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.1.5/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.1.5/bitbucket-pipelines.yml b/atlassian/bitbucket/6.1.5/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.1.5/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.1.5/entrypoint.sh b/atlassian/bitbucket/6.1.5/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.1.5/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.1.6/.docker-repository.yml b/atlassian/bitbucket/6.1.6/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.1.6/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.1.6/.dockerignore b/atlassian/bitbucket/6.1.6/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.1.6/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.1.6/Dockerfile b/atlassian/bitbucket/6.1.6/Dockerfile new file mode 100644 index 000000000..f136b0930 --- /dev/null +++ b/atlassian/bitbucket/6.1.6/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.1.6 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.1.6/Makefile b/atlassian/bitbucket/6.1.6/Makefile new file mode 100644 index 000000000..5fb1f5d36 --- /dev/null +++ b/atlassian/bitbucket/6.1.6/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.1.6 . diff --git a/atlassian/bitbucket/6.1.6/README.md b/atlassian/bitbucket/6.1.6/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.1.6/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.1.6/bitbucket-pipelines.yml b/atlassian/bitbucket/6.1.6/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.1.6/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.1.6/entrypoint.sh b/atlassian/bitbucket/6.1.6/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.1.6/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.1.7/.docker-repository.yml b/atlassian/bitbucket/6.1.7/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.1.7/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.1.7/.dockerignore b/atlassian/bitbucket/6.1.7/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.1.7/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.1.7/Dockerfile b/atlassian/bitbucket/6.1.7/Dockerfile new file mode 100644 index 000000000..e1d78352a --- /dev/null +++ b/atlassian/bitbucket/6.1.7/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.1.7 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.1.7/Makefile b/atlassian/bitbucket/6.1.7/Makefile new file mode 100644 index 000000000..07a18d04b --- /dev/null +++ b/atlassian/bitbucket/6.1.7/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.1.7 . diff --git a/atlassian/bitbucket/6.1.7/README.md b/atlassian/bitbucket/6.1.7/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.1.7/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.1.7/bitbucket-pipelines.yml b/atlassian/bitbucket/6.1.7/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.1.7/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.1.7/entrypoint.sh b/atlassian/bitbucket/6.1.7/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.1.7/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.1.8/.docker-repository.yml b/atlassian/bitbucket/6.1.8/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.1.8/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.1.8/.dockerignore b/atlassian/bitbucket/6.1.8/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.1.8/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.1.8/Dockerfile b/atlassian/bitbucket/6.1.8/Dockerfile new file mode 100644 index 000000000..29317a8ad --- /dev/null +++ b/atlassian/bitbucket/6.1.8/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.1.8 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.1.8/Makefile b/atlassian/bitbucket/6.1.8/Makefile new file mode 100644 index 000000000..c6459ca25 --- /dev/null +++ b/atlassian/bitbucket/6.1.8/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.1.8 . diff --git a/atlassian/bitbucket/6.1.8/README.md b/atlassian/bitbucket/6.1.8/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.1.8/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.1.8/bitbucket-pipelines.yml b/atlassian/bitbucket/6.1.8/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.1.8/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.1.8/entrypoint.sh b/atlassian/bitbucket/6.1.8/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.1.8/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.1.9/.docker-repository.yml b/atlassian/bitbucket/6.1.9/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.1.9/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.1.9/.dockerignore b/atlassian/bitbucket/6.1.9/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.1.9/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.1.9/Dockerfile b/atlassian/bitbucket/6.1.9/Dockerfile new file mode 100644 index 000000000..c30f7a6ee --- /dev/null +++ b/atlassian/bitbucket/6.1.9/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.1.9 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.1.9/Makefile b/atlassian/bitbucket/6.1.9/Makefile new file mode 100644 index 000000000..4a4deaf08 --- /dev/null +++ b/atlassian/bitbucket/6.1.9/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.1.9 . diff --git a/atlassian/bitbucket/6.1.9/README.md b/atlassian/bitbucket/6.1.9/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.1.9/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.1.9/bitbucket-pipelines.yml b/atlassian/bitbucket/6.1.9/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.1.9/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.1.9/entrypoint.sh b/atlassian/bitbucket/6.1.9/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.1.9/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi From 017e7473dc6e8f945bae9aaa0e0d3e8bee50f79d Mon Sep 17 00:00:00 2001 From: stam Date: Wed, 15 Jan 2020 16:29:02 +0300 Subject: [PATCH 16/50] Bitbucket 6.2 --- .travis.yml | 38 +++ CHANGELOG.md | 1 + .../bitbucket/6.2.2/.docker-repository.yml | 1 + atlassian/bitbucket/6.2.2/.dockerignore | 3 + atlassian/bitbucket/6.2.2/Dockerfile | 45 ++++ atlassian/bitbucket/6.2.2/Makefile | 4 + atlassian/bitbucket/6.2.2/README.md | 216 ++++++++++++++++++ .../bitbucket/6.2.2/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.2.2/entrypoint.sh | 57 +++++ .../bitbucket/6.2.3/.docker-repository.yml | 1 + atlassian/bitbucket/6.2.3/.dockerignore | 3 + atlassian/bitbucket/6.2.3/Dockerfile | 45 ++++ atlassian/bitbucket/6.2.3/Makefile | 4 + atlassian/bitbucket/6.2.3/README.md | 216 ++++++++++++++++++ .../bitbucket/6.2.3/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.2.3/entrypoint.sh | 57 +++++ .../bitbucket/6.2.4/.docker-repository.yml | 1 + atlassian/bitbucket/6.2.4/.dockerignore | 3 + atlassian/bitbucket/6.2.4/Dockerfile | 45 ++++ atlassian/bitbucket/6.2.4/Makefile | 4 + atlassian/bitbucket/6.2.4/README.md | 216 ++++++++++++++++++ .../bitbucket/6.2.4/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.2.4/entrypoint.sh | 57 +++++ .../bitbucket/6.2.5/.docker-repository.yml | 1 + atlassian/bitbucket/6.2.5/.dockerignore | 3 + atlassian/bitbucket/6.2.5/Dockerfile | 45 ++++ atlassian/bitbucket/6.2.5/Makefile | 4 + atlassian/bitbucket/6.2.5/README.md | 216 ++++++++++++++++++ .../bitbucket/6.2.5/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.2.5/entrypoint.sh | 57 +++++ .../bitbucket/6.2.6/.docker-repository.yml | 1 + atlassian/bitbucket/6.2.6/.dockerignore | 3 + atlassian/bitbucket/6.2.6/Dockerfile | 45 ++++ atlassian/bitbucket/6.2.6/Makefile | 4 + atlassian/bitbucket/6.2.6/README.md | 216 ++++++++++++++++++ .../bitbucket/6.2.6/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.2.6/entrypoint.sh | 57 +++++ .../bitbucket/6.2.7/.docker-repository.yml | 1 + atlassian/bitbucket/6.2.7/.dockerignore | 3 + atlassian/bitbucket/6.2.7/Dockerfile | 45 ++++ atlassian/bitbucket/6.2.7/Makefile | 4 + atlassian/bitbucket/6.2.7/README.md | 216 ++++++++++++++++++ .../bitbucket/6.2.7/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.2.7/entrypoint.sh | 57 +++++ 44 files changed, 2391 insertions(+) create mode 100644 atlassian/bitbucket/6.2.2/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.2.2/.dockerignore create mode 100644 atlassian/bitbucket/6.2.2/Dockerfile create mode 100644 atlassian/bitbucket/6.2.2/Makefile create mode 100644 atlassian/bitbucket/6.2.2/README.md create mode 100644 atlassian/bitbucket/6.2.2/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.2.2/entrypoint.sh create mode 100644 atlassian/bitbucket/6.2.3/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.2.3/.dockerignore create mode 100644 atlassian/bitbucket/6.2.3/Dockerfile create mode 100644 atlassian/bitbucket/6.2.3/Makefile create mode 100644 atlassian/bitbucket/6.2.3/README.md create mode 100644 atlassian/bitbucket/6.2.3/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.2.3/entrypoint.sh create mode 100644 atlassian/bitbucket/6.2.4/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.2.4/.dockerignore create mode 100644 atlassian/bitbucket/6.2.4/Dockerfile create mode 100644 atlassian/bitbucket/6.2.4/Makefile create mode 100644 atlassian/bitbucket/6.2.4/README.md create mode 100644 atlassian/bitbucket/6.2.4/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.2.4/entrypoint.sh create mode 100644 atlassian/bitbucket/6.2.5/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.2.5/.dockerignore create mode 100644 atlassian/bitbucket/6.2.5/Dockerfile create mode 100644 atlassian/bitbucket/6.2.5/Makefile create mode 100644 atlassian/bitbucket/6.2.5/README.md create mode 100644 atlassian/bitbucket/6.2.5/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.2.5/entrypoint.sh create mode 100644 atlassian/bitbucket/6.2.6/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.2.6/.dockerignore create mode 100644 atlassian/bitbucket/6.2.6/Dockerfile create mode 100644 atlassian/bitbucket/6.2.6/Makefile create mode 100644 atlassian/bitbucket/6.2.6/README.md create mode 100644 atlassian/bitbucket/6.2.6/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.2.6/entrypoint.sh create mode 100644 atlassian/bitbucket/6.2.7/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.2.7/.dockerignore create mode 100644 atlassian/bitbucket/6.2.7/Dockerfile create mode 100644 atlassian/bitbucket/6.2.7/Makefile create mode 100644 atlassian/bitbucket/6.2.7/README.md create mode 100644 atlassian/bitbucket/6.2.7/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.2.7/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index 59360270c..acacea4d8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -293,6 +293,44 @@ matrix: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/bitbucket:6.2.1 atlassian/bitbucket/6.2.1 - docker push epicmorg/bitbucket:6.2.1 + + - name: Bitbucket 6.2.2 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.2.2 atlassian/bitbucket/6.2.2 + - docker push epicmorg/bitbucket:6.2.2 + + - name: Bitbucket 6.2.3 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.2.3 atlassian/bitbucket/6.2.3 + - docker push epicmorg/bitbucket:6.2.3 + + - name: Bitbucket 6.2.4 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.2.4 atlassian/bitbucket/6.2.4 + - docker push epicmorg/bitbucket:6.2.4 + + - name: Bitbucket 6.2.5 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.2.5 atlassian/bitbucket/6.2.5 + - docker push epicmorg/bitbucket:6.2.5 + + - name: Bitbucket 6.2.6 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.2.6 atlassian/bitbucket/6.2.6 + - docker push epicmorg/bitbucket:6.2.6 + + - name: Bitbucket 6.2.7 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.2.7 atlassian/bitbucket/6.2.7 + - docker push epicmorg/bitbucket:6.2.7 + +########## - name: Bitbucket 6.3.0 script: diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a1315d37..674f21ab6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ * added `Jira 7.9.x`: `7.9.0`, `7.9.2` * added `Bitbucket 6.0.x`: `6.0.0`, `6.0.1`, `6.0.2`, `6.0.3`, `6.0.4`, `6.0.5`, `6.0.6`, `6.0.7`, `6.0.8`, `6.0.9`, `6.0.10`, `6.0.11` * added `Bitbucket 6.1.x`: `6.1.0`, `6.1.1`, `6.1.2`, `6.1.3`, `6.1.4`, `6.1.5`, `6.1.6`, `6.1.7`, `6.1.8`, `6.1.9` + * added `Bitbucket 6.2.x`: `6.2.2`, `6.2.3`, `6.2.4`, `6.2.5`, `6.2.6`, `6.2.7` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/bitbucket/6.2.2/.docker-repository.yml b/atlassian/bitbucket/6.2.2/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.2.2/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.2.2/.dockerignore b/atlassian/bitbucket/6.2.2/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.2.2/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.2.2/Dockerfile b/atlassian/bitbucket/6.2.2/Dockerfile new file mode 100644 index 000000000..b6a53aa0a --- /dev/null +++ b/atlassian/bitbucket/6.2.2/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.2.2 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.2.2/Makefile b/atlassian/bitbucket/6.2.2/Makefile new file mode 100644 index 000000000..1878acb51 --- /dev/null +++ b/atlassian/bitbucket/6.2.2/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.2.2 . diff --git a/atlassian/bitbucket/6.2.2/README.md b/atlassian/bitbucket/6.2.2/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.2.2/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.2.2/bitbucket-pipelines.yml b/atlassian/bitbucket/6.2.2/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.2.2/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.2.2/entrypoint.sh b/atlassian/bitbucket/6.2.2/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.2.2/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.2.3/.docker-repository.yml b/atlassian/bitbucket/6.2.3/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.2.3/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.2.3/.dockerignore b/atlassian/bitbucket/6.2.3/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.2.3/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.2.3/Dockerfile b/atlassian/bitbucket/6.2.3/Dockerfile new file mode 100644 index 000000000..ca22f13d7 --- /dev/null +++ b/atlassian/bitbucket/6.2.3/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.2.3 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.2.3/Makefile b/atlassian/bitbucket/6.2.3/Makefile new file mode 100644 index 000000000..0ef3190fe --- /dev/null +++ b/atlassian/bitbucket/6.2.3/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.2.3 . diff --git a/atlassian/bitbucket/6.2.3/README.md b/atlassian/bitbucket/6.2.3/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.2.3/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.2.3/bitbucket-pipelines.yml b/atlassian/bitbucket/6.2.3/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.2.3/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.2.3/entrypoint.sh b/atlassian/bitbucket/6.2.3/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.2.3/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.2.4/.docker-repository.yml b/atlassian/bitbucket/6.2.4/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.2.4/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.2.4/.dockerignore b/atlassian/bitbucket/6.2.4/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.2.4/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.2.4/Dockerfile b/atlassian/bitbucket/6.2.4/Dockerfile new file mode 100644 index 000000000..2b6bc29f3 --- /dev/null +++ b/atlassian/bitbucket/6.2.4/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.2.4 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.2.4/Makefile b/atlassian/bitbucket/6.2.4/Makefile new file mode 100644 index 000000000..d8519fde7 --- /dev/null +++ b/atlassian/bitbucket/6.2.4/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.2.4 . diff --git a/atlassian/bitbucket/6.2.4/README.md b/atlassian/bitbucket/6.2.4/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.2.4/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.2.4/bitbucket-pipelines.yml b/atlassian/bitbucket/6.2.4/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.2.4/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.2.4/entrypoint.sh b/atlassian/bitbucket/6.2.4/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.2.4/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.2.5/.docker-repository.yml b/atlassian/bitbucket/6.2.5/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.2.5/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.2.5/.dockerignore b/atlassian/bitbucket/6.2.5/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.2.5/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.2.5/Dockerfile b/atlassian/bitbucket/6.2.5/Dockerfile new file mode 100644 index 000000000..5ebb396e4 --- /dev/null +++ b/atlassian/bitbucket/6.2.5/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.2.5 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.2.5/Makefile b/atlassian/bitbucket/6.2.5/Makefile new file mode 100644 index 000000000..da55fdd3e --- /dev/null +++ b/atlassian/bitbucket/6.2.5/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.2.5 . diff --git a/atlassian/bitbucket/6.2.5/README.md b/atlassian/bitbucket/6.2.5/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.2.5/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.2.5/bitbucket-pipelines.yml b/atlassian/bitbucket/6.2.5/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.2.5/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.2.5/entrypoint.sh b/atlassian/bitbucket/6.2.5/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.2.5/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.2.6/.docker-repository.yml b/atlassian/bitbucket/6.2.6/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.2.6/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.2.6/.dockerignore b/atlassian/bitbucket/6.2.6/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.2.6/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.2.6/Dockerfile b/atlassian/bitbucket/6.2.6/Dockerfile new file mode 100644 index 000000000..8530e21ae --- /dev/null +++ b/atlassian/bitbucket/6.2.6/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.2.6 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.2.6/Makefile b/atlassian/bitbucket/6.2.6/Makefile new file mode 100644 index 000000000..142f93ebc --- /dev/null +++ b/atlassian/bitbucket/6.2.6/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.2.6 . diff --git a/atlassian/bitbucket/6.2.6/README.md b/atlassian/bitbucket/6.2.6/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.2.6/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.2.6/bitbucket-pipelines.yml b/atlassian/bitbucket/6.2.6/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.2.6/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.2.6/entrypoint.sh b/atlassian/bitbucket/6.2.6/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.2.6/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.2.7/.docker-repository.yml b/atlassian/bitbucket/6.2.7/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.2.7/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.2.7/.dockerignore b/atlassian/bitbucket/6.2.7/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.2.7/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.2.7/Dockerfile b/atlassian/bitbucket/6.2.7/Dockerfile new file mode 100644 index 000000000..8ebe06e9a --- /dev/null +++ b/atlassian/bitbucket/6.2.7/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.2.7 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.2.7/Makefile b/atlassian/bitbucket/6.2.7/Makefile new file mode 100644 index 000000000..e41dedb75 --- /dev/null +++ b/atlassian/bitbucket/6.2.7/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.2.7 . diff --git a/atlassian/bitbucket/6.2.7/README.md b/atlassian/bitbucket/6.2.7/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.2.7/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.2.7/bitbucket-pipelines.yml b/atlassian/bitbucket/6.2.7/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.2.7/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.2.7/entrypoint.sh b/atlassian/bitbucket/6.2.7/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.2.7/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi From b75da34a36211f8f434c4ca3e0ad4656eb22e001 Mon Sep 17 00:00:00 2001 From: stam Date: Wed, 15 Jan 2020 16:33:47 +0300 Subject: [PATCH 17/50] Bitbucket 6.3 --- .travis.yml | 26 +++ CHANGELOG.md | 1 + .../bitbucket/6.3.3/.docker-repository.yml | 1 + atlassian/bitbucket/6.3.3/.dockerignore | 3 + atlassian/bitbucket/6.3.3/Dockerfile | 45 ++++ atlassian/bitbucket/6.3.3/Makefile | 4 + atlassian/bitbucket/6.3.3/README.md | 216 ++++++++++++++++++ .../bitbucket/6.3.3/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.3.3/entrypoint.sh | 57 +++++ .../bitbucket/6.3.4/.docker-repository.yml | 1 + atlassian/bitbucket/6.3.4/.dockerignore | 3 + atlassian/bitbucket/6.3.4/Dockerfile | 45 ++++ atlassian/bitbucket/6.3.4/Makefile | 4 + atlassian/bitbucket/6.3.4/README.md | 216 ++++++++++++++++++ .../bitbucket/6.3.4/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.3.4/entrypoint.sh | 57 +++++ .../bitbucket/6.3.5/.docker-repository.yml | 1 + atlassian/bitbucket/6.3.5/.dockerignore | 3 + atlassian/bitbucket/6.3.5/Dockerfile | 45 ++++ atlassian/bitbucket/6.3.5/Makefile | 4 + atlassian/bitbucket/6.3.5/README.md | 216 ++++++++++++++++++ .../bitbucket/6.3.5/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.3.5/entrypoint.sh | 57 +++++ .../bitbucket/6.3.6/.docker-repository.yml | 1 + atlassian/bitbucket/6.3.6/.dockerignore | 3 + atlassian/bitbucket/6.3.6/Dockerfile | 45 ++++ atlassian/bitbucket/6.3.6/Makefile | 4 + atlassian/bitbucket/6.3.6/README.md | 216 ++++++++++++++++++ .../bitbucket/6.3.6/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.3.6/entrypoint.sh | 57 +++++ 30 files changed, 1595 insertions(+) create mode 100644 atlassian/bitbucket/6.3.3/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.3.3/.dockerignore create mode 100644 atlassian/bitbucket/6.3.3/Dockerfile create mode 100644 atlassian/bitbucket/6.3.3/Makefile create mode 100644 atlassian/bitbucket/6.3.3/README.md create mode 100644 atlassian/bitbucket/6.3.3/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.3.3/entrypoint.sh create mode 100644 atlassian/bitbucket/6.3.4/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.3.4/.dockerignore create mode 100644 atlassian/bitbucket/6.3.4/Dockerfile create mode 100644 atlassian/bitbucket/6.3.4/Makefile create mode 100644 atlassian/bitbucket/6.3.4/README.md create mode 100644 atlassian/bitbucket/6.3.4/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.3.4/entrypoint.sh create mode 100644 atlassian/bitbucket/6.3.5/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.3.5/.dockerignore create mode 100644 atlassian/bitbucket/6.3.5/Dockerfile create mode 100644 atlassian/bitbucket/6.3.5/Makefile create mode 100644 atlassian/bitbucket/6.3.5/README.md create mode 100644 atlassian/bitbucket/6.3.5/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.3.5/entrypoint.sh create mode 100644 atlassian/bitbucket/6.3.6/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.3.6/.dockerignore create mode 100644 atlassian/bitbucket/6.3.6/Dockerfile create mode 100644 atlassian/bitbucket/6.3.6/Makefile create mode 100644 atlassian/bitbucket/6.3.6/README.md create mode 100644 atlassian/bitbucket/6.3.6/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.3.6/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index acacea4d8..45111e5a8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -350,6 +350,32 @@ matrix: - docker build --compress -t epicmorg/bitbucket:6.3.2 atlassian/bitbucket/6.3.2 - docker push epicmorg/bitbucket:6.3.2 + - name: Bitbucket 6.3.3 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.3.3 atlassian/bitbucket/6.3.3 + - docker push epicmorg/bitbucket:6.3.3 + + - name: Bitbucket 6.3.4 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.3.4 atlassian/bitbucket/6.3.4 + - docker push epicmorg/bitbucket:6.3.4 + + - name: Bitbucket 6.3.5 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.3.5 atlassian/bitbucket/6.3.5 + - docker push epicmorg/bitbucket:6.3.5 + + - name: Bitbucket 6.3.6 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.3.6 atlassian/bitbucket/6.3.6 + - docker push epicmorg/bitbucket:6.3.6 + +########## + - name: Bitbucket 6.4.0 script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin diff --git a/CHANGELOG.md b/CHANGELOG.md index 674f21ab6..11a184f43 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ * added `Bitbucket 6.0.x`: `6.0.0`, `6.0.1`, `6.0.2`, `6.0.3`, `6.0.4`, `6.0.5`, `6.0.6`, `6.0.7`, `6.0.8`, `6.0.9`, `6.0.10`, `6.0.11` * added `Bitbucket 6.1.x`: `6.1.0`, `6.1.1`, `6.1.2`, `6.1.3`, `6.1.4`, `6.1.5`, `6.1.6`, `6.1.7`, `6.1.8`, `6.1.9` * added `Bitbucket 6.2.x`: `6.2.2`, `6.2.3`, `6.2.4`, `6.2.5`, `6.2.6`, `6.2.7` + * added `Bitbucket 6.3.x`: `6.3.3`, `6.3.4`, `6.3.5`, `6.3.6` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/bitbucket/6.3.3/.docker-repository.yml b/atlassian/bitbucket/6.3.3/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.3.3/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.3.3/.dockerignore b/atlassian/bitbucket/6.3.3/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.3.3/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.3.3/Dockerfile b/atlassian/bitbucket/6.3.3/Dockerfile new file mode 100644 index 000000000..5e4e3cc83 --- /dev/null +++ b/atlassian/bitbucket/6.3.3/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.3.3 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.3.3/Makefile b/atlassian/bitbucket/6.3.3/Makefile new file mode 100644 index 000000000..8261e0497 --- /dev/null +++ b/atlassian/bitbucket/6.3.3/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.3.3 . diff --git a/atlassian/bitbucket/6.3.3/README.md b/atlassian/bitbucket/6.3.3/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.3.3/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.3.3/bitbucket-pipelines.yml b/atlassian/bitbucket/6.3.3/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.3.3/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.3.3/entrypoint.sh b/atlassian/bitbucket/6.3.3/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.3.3/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.3.4/.docker-repository.yml b/atlassian/bitbucket/6.3.4/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.3.4/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.3.4/.dockerignore b/atlassian/bitbucket/6.3.4/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.3.4/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.3.4/Dockerfile b/atlassian/bitbucket/6.3.4/Dockerfile new file mode 100644 index 000000000..9ca261f0d --- /dev/null +++ b/atlassian/bitbucket/6.3.4/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.3.4 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.3.4/Makefile b/atlassian/bitbucket/6.3.4/Makefile new file mode 100644 index 000000000..e4bc1e927 --- /dev/null +++ b/atlassian/bitbucket/6.3.4/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.3.4 . diff --git a/atlassian/bitbucket/6.3.4/README.md b/atlassian/bitbucket/6.3.4/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.3.4/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.3.4/bitbucket-pipelines.yml b/atlassian/bitbucket/6.3.4/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.3.4/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.3.4/entrypoint.sh b/atlassian/bitbucket/6.3.4/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.3.4/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.3.5/.docker-repository.yml b/atlassian/bitbucket/6.3.5/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.3.5/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.3.5/.dockerignore b/atlassian/bitbucket/6.3.5/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.3.5/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.3.5/Dockerfile b/atlassian/bitbucket/6.3.5/Dockerfile new file mode 100644 index 000000000..cdfc1eca5 --- /dev/null +++ b/atlassian/bitbucket/6.3.5/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.3.5 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.3.5/Makefile b/atlassian/bitbucket/6.3.5/Makefile new file mode 100644 index 000000000..e2a991ebd --- /dev/null +++ b/atlassian/bitbucket/6.3.5/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.3.5 . diff --git a/atlassian/bitbucket/6.3.5/README.md b/atlassian/bitbucket/6.3.5/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.3.5/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.3.5/bitbucket-pipelines.yml b/atlassian/bitbucket/6.3.5/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.3.5/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.3.5/entrypoint.sh b/atlassian/bitbucket/6.3.5/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.3.5/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.3.6/.docker-repository.yml b/atlassian/bitbucket/6.3.6/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.3.6/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.3.6/.dockerignore b/atlassian/bitbucket/6.3.6/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.3.6/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.3.6/Dockerfile b/atlassian/bitbucket/6.3.6/Dockerfile new file mode 100644 index 000000000..0c69fb20f --- /dev/null +++ b/atlassian/bitbucket/6.3.6/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.3.6 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.3.6/Makefile b/atlassian/bitbucket/6.3.6/Makefile new file mode 100644 index 000000000..d1f963390 --- /dev/null +++ b/atlassian/bitbucket/6.3.6/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.3.6 . diff --git a/atlassian/bitbucket/6.3.6/README.md b/atlassian/bitbucket/6.3.6/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.3.6/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.3.6/bitbucket-pipelines.yml b/atlassian/bitbucket/6.3.6/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.3.6/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.3.6/entrypoint.sh b/atlassian/bitbucket/6.3.6/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.3.6/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi From a335a72ba928c06233575ee4d7136ca2312f5b79 Mon Sep 17 00:00:00 2001 From: stam Date: Wed, 15 Jan 2020 16:46:52 +0300 Subject: [PATCH 18/50] Bitbucket 6.4 --- .travis.yml | 20 ++ CHANGELOG.md | 1 + .../bitbucket/6.4.2/.docker-repository.yml | 1 + atlassian/bitbucket/6.4.2/.dockerignore | 3 + atlassian/bitbucket/6.4.2/Dockerfile | 45 ++++ atlassian/bitbucket/6.4.2/Makefile | 4 + atlassian/bitbucket/6.4.2/README.md | 216 ++++++++++++++++++ .../bitbucket/6.4.2/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.4.2/entrypoint.sh | 57 +++++ .../bitbucket/6.4.3/.docker-repository.yml | 1 + atlassian/bitbucket/6.4.3/.dockerignore | 3 + atlassian/bitbucket/6.4.3/Dockerfile | 45 ++++ atlassian/bitbucket/6.4.3/Makefile | 4 + atlassian/bitbucket/6.4.3/README.md | 216 ++++++++++++++++++ .../bitbucket/6.4.3/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.4.3/entrypoint.sh | 57 +++++ .../bitbucket/6.4.4/.docker-repository.yml | 1 + atlassian/bitbucket/6.4.4/.dockerignore | 3 + atlassian/bitbucket/6.4.4/Dockerfile | 45 ++++ atlassian/bitbucket/6.4.4/Makefile | 4 + atlassian/bitbucket/6.4.4/README.md | 216 ++++++++++++++++++ .../bitbucket/6.4.4/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.4.4/entrypoint.sh | 57 +++++ 23 files changed, 1197 insertions(+) create mode 100644 atlassian/bitbucket/6.4.2/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.4.2/.dockerignore create mode 100644 atlassian/bitbucket/6.4.2/Dockerfile create mode 100644 atlassian/bitbucket/6.4.2/Makefile create mode 100644 atlassian/bitbucket/6.4.2/README.md create mode 100644 atlassian/bitbucket/6.4.2/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.4.2/entrypoint.sh create mode 100644 atlassian/bitbucket/6.4.3/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.4.3/.dockerignore create mode 100644 atlassian/bitbucket/6.4.3/Dockerfile create mode 100644 atlassian/bitbucket/6.4.3/Makefile create mode 100644 atlassian/bitbucket/6.4.3/README.md create mode 100644 atlassian/bitbucket/6.4.3/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.4.3/entrypoint.sh create mode 100644 atlassian/bitbucket/6.4.4/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.4.4/.dockerignore create mode 100644 atlassian/bitbucket/6.4.4/Dockerfile create mode 100644 atlassian/bitbucket/6.4.4/Makefile create mode 100644 atlassian/bitbucket/6.4.4/README.md create mode 100644 atlassian/bitbucket/6.4.4/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.4.4/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index 45111e5a8..8bde64ea0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -388,6 +388,26 @@ matrix: - docker build --compress -t epicmorg/bitbucket:6.4.1 atlassian/bitbucket/6.4.1 - docker push epicmorg/bitbucket:6.4.1 + - name: Bitbucket 6.4.2 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.4.2 atlassian/bitbucket/6.4.2 + - docker push epicmorg/bitbucket:6.4.2 + + - name: Bitbucket 6.4.3 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.4.3 atlassian/bitbucket/6.4.3 + - docker push epicmorg/bitbucket:6.4.3 + + - name: Bitbucket 6.4.4 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.4.4 atlassian/bitbucket/6.4.4 + - docker push epicmorg/bitbucket:6.4.4 + +########## + - name: Bitbucket 6.5.0 script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin diff --git a/CHANGELOG.md b/CHANGELOG.md index 11a184f43..334973928 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ * added `Bitbucket 6.1.x`: `6.1.0`, `6.1.1`, `6.1.2`, `6.1.3`, `6.1.4`, `6.1.5`, `6.1.6`, `6.1.7`, `6.1.8`, `6.1.9` * added `Bitbucket 6.2.x`: `6.2.2`, `6.2.3`, `6.2.4`, `6.2.5`, `6.2.6`, `6.2.7` * added `Bitbucket 6.3.x`: `6.3.3`, `6.3.4`, `6.3.5`, `6.3.6` + * added `Bitbucket 6.4.x`: `6.4.2`, `6.4.3`, `6.4.4` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/bitbucket/6.4.2/.docker-repository.yml b/atlassian/bitbucket/6.4.2/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.4.2/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.4.2/.dockerignore b/atlassian/bitbucket/6.4.2/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.4.2/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.4.2/Dockerfile b/atlassian/bitbucket/6.4.2/Dockerfile new file mode 100644 index 000000000..d8caaa055 --- /dev/null +++ b/atlassian/bitbucket/6.4.2/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.4.2 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.4.2/Makefile b/atlassian/bitbucket/6.4.2/Makefile new file mode 100644 index 000000000..41cc6d9a4 --- /dev/null +++ b/atlassian/bitbucket/6.4.2/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.4.2 . diff --git a/atlassian/bitbucket/6.4.2/README.md b/atlassian/bitbucket/6.4.2/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.4.2/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.4.2/bitbucket-pipelines.yml b/atlassian/bitbucket/6.4.2/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.4.2/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.4.2/entrypoint.sh b/atlassian/bitbucket/6.4.2/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.4.2/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.4.3/.docker-repository.yml b/atlassian/bitbucket/6.4.3/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.4.3/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.4.3/.dockerignore b/atlassian/bitbucket/6.4.3/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.4.3/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.4.3/Dockerfile b/atlassian/bitbucket/6.4.3/Dockerfile new file mode 100644 index 000000000..b9af28c9a --- /dev/null +++ b/atlassian/bitbucket/6.4.3/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.4.3 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.4.3/Makefile b/atlassian/bitbucket/6.4.3/Makefile new file mode 100644 index 000000000..6db1dc0d6 --- /dev/null +++ b/atlassian/bitbucket/6.4.3/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.4.3 . diff --git a/atlassian/bitbucket/6.4.3/README.md b/atlassian/bitbucket/6.4.3/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.4.3/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.4.3/bitbucket-pipelines.yml b/atlassian/bitbucket/6.4.3/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.4.3/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.4.3/entrypoint.sh b/atlassian/bitbucket/6.4.3/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.4.3/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.4.4/.docker-repository.yml b/atlassian/bitbucket/6.4.4/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.4.4/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.4.4/.dockerignore b/atlassian/bitbucket/6.4.4/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.4.4/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.4.4/Dockerfile b/atlassian/bitbucket/6.4.4/Dockerfile new file mode 100644 index 000000000..048852cdc --- /dev/null +++ b/atlassian/bitbucket/6.4.4/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.4.4 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.4.4/Makefile b/atlassian/bitbucket/6.4.4/Makefile new file mode 100644 index 000000000..2478677d3 --- /dev/null +++ b/atlassian/bitbucket/6.4.4/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.4.4 . diff --git a/atlassian/bitbucket/6.4.4/README.md b/atlassian/bitbucket/6.4.4/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.4.4/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.4.4/bitbucket-pipelines.yml b/atlassian/bitbucket/6.4.4/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.4.4/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.4.4/entrypoint.sh b/atlassian/bitbucket/6.4.4/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.4.4/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi From 894b5cf8554c2567707649e21aa115e9eb3778ca Mon Sep 17 00:00:00 2001 From: stam Date: Wed, 15 Jan 2020 16:48:25 +0300 Subject: [PATCH 19/50] Bitbucket 6.5 --- .travis.yml | 8 + CHANGELOG.md | 1 + .../bitbucket/6.5.3/.docker-repository.yml | 1 + atlassian/bitbucket/6.5.3/.dockerignore | 3 + atlassian/bitbucket/6.5.3/Dockerfile | 45 ++++ atlassian/bitbucket/6.5.3/Makefile | 4 + atlassian/bitbucket/6.5.3/README.md | 216 ++++++++++++++++++ .../bitbucket/6.5.3/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.5.3/entrypoint.sh | 57 +++++ 9 files changed, 401 insertions(+) create mode 100644 atlassian/bitbucket/6.5.3/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.5.3/.dockerignore create mode 100644 atlassian/bitbucket/6.5.3/Dockerfile create mode 100644 atlassian/bitbucket/6.5.3/Makefile create mode 100644 atlassian/bitbucket/6.5.3/README.md create mode 100644 atlassian/bitbucket/6.5.3/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.5.3/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index 8bde64ea0..1fa983428 100644 --- a/.travis.yml +++ b/.travis.yml @@ -426,6 +426,14 @@ matrix: - docker build --compress -t epicmorg/bitbucket:6.5.2 atlassian/bitbucket/6.5.2 - docker push epicmorg/bitbucket:6.5.2 + - name: Bitbucket 6.5.3 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.5.3 atlassian/bitbucket/6.5.3 + - docker push epicmorg/bitbucket:6.5.3 + +########## + - name: Bitbucket 6.6.0 script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin diff --git a/CHANGELOG.md b/CHANGELOG.md index 334973928..61b2cf13b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ * added `Bitbucket 6.2.x`: `6.2.2`, `6.2.3`, `6.2.4`, `6.2.5`, `6.2.6`, `6.2.7` * added `Bitbucket 6.3.x`: `6.3.3`, `6.3.4`, `6.3.5`, `6.3.6` * added `Bitbucket 6.4.x`: `6.4.2`, `6.4.3`, `6.4.4` + * added `Bitbucket 6.5.x`: `6.5.3` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/bitbucket/6.5.3/.docker-repository.yml b/atlassian/bitbucket/6.5.3/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.5.3/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.5.3/.dockerignore b/atlassian/bitbucket/6.5.3/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.5.3/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.5.3/Dockerfile b/atlassian/bitbucket/6.5.3/Dockerfile new file mode 100644 index 000000000..7c4247ef6 --- /dev/null +++ b/atlassian/bitbucket/6.5.3/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.5.3 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.5.3/Makefile b/atlassian/bitbucket/6.5.3/Makefile new file mode 100644 index 000000000..7834a6acd --- /dev/null +++ b/atlassian/bitbucket/6.5.3/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.5.3 . diff --git a/atlassian/bitbucket/6.5.3/README.md b/atlassian/bitbucket/6.5.3/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.5.3/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.5.3/bitbucket-pipelines.yml b/atlassian/bitbucket/6.5.3/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.5.3/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.5.3/entrypoint.sh b/atlassian/bitbucket/6.5.3/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.5.3/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi From 988cbeae64771907310c551a1c258509bf0680e9 Mon Sep 17 00:00:00 2001 From: stam Date: Wed, 15 Jan 2020 16:53:47 +0300 Subject: [PATCH 20/50] Bitbucket 6.6 --- .travis.yml | 8 + CHANGELOG.md | 1 + .../bitbucket/6.6.3/.docker-repository.yml | 1 + atlassian/bitbucket/6.6.3/.dockerignore | 3 + atlassian/bitbucket/6.6.3/Dockerfile | 45 ++++ atlassian/bitbucket/6.6.3/Makefile | 4 + atlassian/bitbucket/6.6.3/README.md | 216 ++++++++++++++++++ .../bitbucket/6.6.3/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.6.3/entrypoint.sh | 57 +++++ 9 files changed, 401 insertions(+) create mode 100644 atlassian/bitbucket/6.6.3/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.6.3/.dockerignore create mode 100644 atlassian/bitbucket/6.6.3/Dockerfile create mode 100644 atlassian/bitbucket/6.6.3/Makefile create mode 100644 atlassian/bitbucket/6.6.3/README.md create mode 100644 atlassian/bitbucket/6.6.3/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.6.3/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index 1fa983428..8789cad8d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -452,6 +452,14 @@ matrix: - docker build --compress -t epicmorg/bitbucket:6.6.2 atlassian/bitbucket/6.6.2 - docker push epicmorg/bitbucket:6.6.2 + - name: Bitbucket 6.6.3 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.6.3 atlassian/bitbucket/6.6.3 + - docker push epicmorg/bitbucket:6.6.3 + +########## + - name: Bitbucket 6.7.0 script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin diff --git a/CHANGELOG.md b/CHANGELOG.md index 61b2cf13b..233772347 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ * added `Bitbucket 6.3.x`: `6.3.3`, `6.3.4`, `6.3.5`, `6.3.6` * added `Bitbucket 6.4.x`: `6.4.2`, `6.4.3`, `6.4.4` * added `Bitbucket 6.5.x`: `6.5.3` + * added `Bitbucket 6.6.x`: `6.6.3` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/bitbucket/6.6.3/.docker-repository.yml b/atlassian/bitbucket/6.6.3/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.6.3/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.6.3/.dockerignore b/atlassian/bitbucket/6.6.3/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.6.3/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.6.3/Dockerfile b/atlassian/bitbucket/6.6.3/Dockerfile new file mode 100644 index 000000000..03bd57405 --- /dev/null +++ b/atlassian/bitbucket/6.6.3/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.6.3 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.6.3/Makefile b/atlassian/bitbucket/6.6.3/Makefile new file mode 100644 index 000000000..c6dc6526c --- /dev/null +++ b/atlassian/bitbucket/6.6.3/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.6.3 . diff --git a/atlassian/bitbucket/6.6.3/README.md b/atlassian/bitbucket/6.6.3/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.6.3/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.6.3/bitbucket-pipelines.yml b/atlassian/bitbucket/6.6.3/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.6.3/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.6.3/entrypoint.sh b/atlassian/bitbucket/6.6.3/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.6.3/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi From c5c0bb1eb4fe461a994a4fbbc0e8e002dfd0afea Mon Sep 17 00:00:00 2001 From: stam Date: Wed, 15 Jan 2020 16:55:00 +0300 Subject: [PATCH 21/50] Bitbucket 6.7 --- .travis.yml | 8 + CHANGELOG.md | 1 + .../bitbucket/6.7.3/.docker-repository.yml | 1 + atlassian/bitbucket/6.7.3/.dockerignore | 3 + atlassian/bitbucket/6.7.3/Dockerfile | 45 ++++ atlassian/bitbucket/6.7.3/Makefile | 4 + atlassian/bitbucket/6.7.3/README.md | 216 ++++++++++++++++++ .../bitbucket/6.7.3/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.7.3/entrypoint.sh | 57 +++++ 9 files changed, 401 insertions(+) create mode 100644 atlassian/bitbucket/6.7.3/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.7.3/.dockerignore create mode 100644 atlassian/bitbucket/6.7.3/Dockerfile create mode 100644 atlassian/bitbucket/6.7.3/Makefile create mode 100644 atlassian/bitbucket/6.7.3/README.md create mode 100644 atlassian/bitbucket/6.7.3/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.7.3/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index 8789cad8d..ae8a759f5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -478,6 +478,14 @@ matrix: - docker build --compress -t epicmorg/bitbucket:6.7.2 atlassian/bitbucket/6.7.2 - docker push epicmorg/bitbucket:6.7.2 + - name: Bitbucket 6.7.3 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.7.3 atlassian/bitbucket/6.7.3 + - docker push epicmorg/bitbucket:6.7.3 + +########## + - name: Bitbucket 6.8.0 script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin diff --git a/CHANGELOG.md b/CHANGELOG.md index 233772347..7e19a7b4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ * added `Bitbucket 6.4.x`: `6.4.2`, `6.4.3`, `6.4.4` * added `Bitbucket 6.5.x`: `6.5.3` * added `Bitbucket 6.6.x`: `6.6.3` + * added `Bitbucket 6.7.x`: `6.7.3` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/bitbucket/6.7.3/.docker-repository.yml b/atlassian/bitbucket/6.7.3/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.7.3/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.7.3/.dockerignore b/atlassian/bitbucket/6.7.3/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.7.3/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.7.3/Dockerfile b/atlassian/bitbucket/6.7.3/Dockerfile new file mode 100644 index 000000000..fd9f18206 --- /dev/null +++ b/atlassian/bitbucket/6.7.3/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.7.3 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.7.3/Makefile b/atlassian/bitbucket/6.7.3/Makefile new file mode 100644 index 000000000..e58393db3 --- /dev/null +++ b/atlassian/bitbucket/6.7.3/Makefile @@ -0,0 +1,4 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.7.3 . diff --git a/atlassian/bitbucket/6.7.3/README.md b/atlassian/bitbucket/6.7.3/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.7.3/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.7.3/bitbucket-pipelines.yml b/atlassian/bitbucket/6.7.3/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.7.3/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.7.3/entrypoint.sh b/atlassian/bitbucket/6.7.3/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.7.3/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi From ec5e1bdf90eda15bf461795a9ecae732ef2773e1 Mon Sep 17 00:00:00 2001 From: stam Date: Wed, 15 Jan 2020 16:56:02 +0300 Subject: [PATCH 22/50] Bitbucket 6.8 --- .travis.yml | 8 + .../bitbucket/6.8.2/.docker-repository.yml | 1 + atlassian/bitbucket/6.8.2/.dockerignore | 3 + atlassian/bitbucket/6.8.2/Dockerfile | 45 ++++ atlassian/bitbucket/6.8.2/Makefile | 5 + atlassian/bitbucket/6.8.2/README.md | 216 ++++++++++++++++++ .../bitbucket/6.8.2/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.8.2/entrypoint.sh | 57 +++++ 8 files changed, 401 insertions(+) create mode 100644 atlassian/bitbucket/6.8.2/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.8.2/.dockerignore create mode 100644 atlassian/bitbucket/6.8.2/Dockerfile create mode 100644 atlassian/bitbucket/6.8.2/Makefile create mode 100644 atlassian/bitbucket/6.8.2/README.md create mode 100644 atlassian/bitbucket/6.8.2/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.8.2/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index ae8a759f5..4c925a322 100644 --- a/.travis.yml +++ b/.travis.yml @@ -498,6 +498,14 @@ matrix: - docker build --compress -t epicmorg/bitbucket:6.8.1 atlassian/bitbucket/6.8.1 - docker push epicmorg/bitbucket:6.8.1 + - name: Bitbucket 6.8.2 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.8.2 atlassian/bitbucket/6.8.2 + - docker push epicmorg/bitbucket:6.8.2 + +########## + ######################################### #### Our Confluence images ######################################### diff --git a/atlassian/bitbucket/6.8.2/.docker-repository.yml b/atlassian/bitbucket/6.8.2/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.8.2/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.8.2/.dockerignore b/atlassian/bitbucket/6.8.2/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.8.2/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.8.2/Dockerfile b/atlassian/bitbucket/6.8.2/Dockerfile new file mode 100644 index 000000000..c10291b6a --- /dev/null +++ b/atlassian/bitbucket/6.8.2/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.8.2 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.8.2/Makefile b/atlassian/bitbucket/6.8.2/Makefile new file mode 100644 index 000000000..e21467742 --- /dev/null +++ b/atlassian/bitbucket/6.8.2/Makefile @@ -0,0 +1,5 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.8.2 . + docker push epicmorg/bitbucket:6.8.2 diff --git a/atlassian/bitbucket/6.8.2/README.md b/atlassian/bitbucket/6.8.2/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.8.2/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.8.2/bitbucket-pipelines.yml b/atlassian/bitbucket/6.8.2/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.8.2/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.8.2/entrypoint.sh b/atlassian/bitbucket/6.8.2/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.8.2/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi From edfcdba102d0f942ce706c292f171fa843cec4a0 Mon Sep 17 00:00:00 2001 From: stam Date: Wed, 15 Jan 2020 16:58:26 +0300 Subject: [PATCH 23/50] Bitbucket 6.9 --- .travis.yml | 14 ++ CHANGELOG.md | 2 + .../bitbucket/6.9.0/.docker-repository.yml | 1 + atlassian/bitbucket/6.9.0/.dockerignore | 3 + atlassian/bitbucket/6.9.0/Dockerfile | 45 ++++ atlassian/bitbucket/6.9.0/Makefile | 5 + atlassian/bitbucket/6.9.0/README.md | 216 ++++++++++++++++++ .../bitbucket/6.9.0/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.9.0/entrypoint.sh | 57 +++++ .../bitbucket/6.9.1/.docker-repository.yml | 1 + atlassian/bitbucket/6.9.1/.dockerignore | 3 + atlassian/bitbucket/6.9.1/Dockerfile | 45 ++++ atlassian/bitbucket/6.9.1/Makefile | 5 + atlassian/bitbucket/6.9.1/README.md | 216 ++++++++++++++++++ .../bitbucket/6.9.1/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.9.1/entrypoint.sh | 57 +++++ 16 files changed, 802 insertions(+) create mode 100644 atlassian/bitbucket/6.9.0/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.9.0/.dockerignore create mode 100644 atlassian/bitbucket/6.9.0/Dockerfile create mode 100644 atlassian/bitbucket/6.9.0/Makefile create mode 100644 atlassian/bitbucket/6.9.0/README.md create mode 100644 atlassian/bitbucket/6.9.0/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.9.0/entrypoint.sh create mode 100644 atlassian/bitbucket/6.9.1/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.9.1/.dockerignore create mode 100644 atlassian/bitbucket/6.9.1/Dockerfile create mode 100644 atlassian/bitbucket/6.9.1/Makefile create mode 100644 atlassian/bitbucket/6.9.1/README.md create mode 100644 atlassian/bitbucket/6.9.1/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.9.1/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index 4c925a322..848deb03d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -504,6 +504,20 @@ matrix: - docker build --compress -t epicmorg/bitbucket:6.8.2 atlassian/bitbucket/6.8.2 - docker push epicmorg/bitbucket:6.8.2 +########## + + - name: Bitbucket 6.9.0 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.9.0 atlassian/bitbucket/6.9.0 + - docker push epicmorg/bitbucket:6.9.0 + + - name: Bitbucket 6.9.1 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.9.1 atlassian/bitbucket/6.9.1 + - docker push epicmorg/bitbucket:6.9.1 + ########## ######################################### diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e19a7b4b..281a628c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,8 @@ * added `Bitbucket 6.5.x`: `6.5.3` * added `Bitbucket 6.6.x`: `6.6.3` * added `Bitbucket 6.7.x`: `6.7.3` + * added `Bitbucket 6.8.x`: `6.8.2` + * added `Bitbucket 6.9.x`: `6.9.0`, `6.9.1` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/bitbucket/6.9.0/.docker-repository.yml b/atlassian/bitbucket/6.9.0/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.9.0/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.9.0/.dockerignore b/atlassian/bitbucket/6.9.0/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.9.0/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.9.0/Dockerfile b/atlassian/bitbucket/6.9.0/Dockerfile new file mode 100644 index 000000000..a3e364a29 --- /dev/null +++ b/atlassian/bitbucket/6.9.0/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.9.0 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.9.0/Makefile b/atlassian/bitbucket/6.9.0/Makefile new file mode 100644 index 000000000..1c0261703 --- /dev/null +++ b/atlassian/bitbucket/6.9.0/Makefile @@ -0,0 +1,5 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.9.0 . + docker push epicmorg/bitbucket:6.9.0 diff --git a/atlassian/bitbucket/6.9.0/README.md b/atlassian/bitbucket/6.9.0/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.9.0/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.9.0/bitbucket-pipelines.yml b/atlassian/bitbucket/6.9.0/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.9.0/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.9.0/entrypoint.sh b/atlassian/bitbucket/6.9.0/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.9.0/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/6.9.1/.docker-repository.yml b/atlassian/bitbucket/6.9.1/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.9.1/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.9.1/.dockerignore b/atlassian/bitbucket/6.9.1/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.9.1/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.9.1/Dockerfile b/atlassian/bitbucket/6.9.1/Dockerfile new file mode 100644 index 000000000..aec1fd5d7 --- /dev/null +++ b/atlassian/bitbucket/6.9.1/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.9.1 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.9.1/Makefile b/atlassian/bitbucket/6.9.1/Makefile new file mode 100644 index 000000000..2b6a57639 --- /dev/null +++ b/atlassian/bitbucket/6.9.1/Makefile @@ -0,0 +1,5 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.9.1 . + docker push epicmorg/bitbucket:6.9.1 diff --git a/atlassian/bitbucket/6.9.1/README.md b/atlassian/bitbucket/6.9.1/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.9.1/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.9.1/bitbucket-pipelines.yml b/atlassian/bitbucket/6.9.1/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.9.1/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.9.1/entrypoint.sh b/atlassian/bitbucket/6.9.1/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.9.1/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi From 6e3b7b5b53f0d4c720d12a89d897f65800c4cc29 Mon Sep 17 00:00:00 2001 From: stam Date: Wed, 15 Jan 2020 17:00:06 +0300 Subject: [PATCH 24/50] Bitbucket 6.10 --- .travis.yml | 8 +- CHANGELOG.md | 1 + .../bitbucket/6.10.0/.docker-repository.yml | 1 + atlassian/bitbucket/6.10.0/.dockerignore | 3 + atlassian/bitbucket/6.10.0/Dockerfile | 45 ++++ atlassian/bitbucket/6.10.0/Makefile | 5 + atlassian/bitbucket/6.10.0/README.md | 216 ++++++++++++++++++ .../bitbucket/6.10.0/bitbucket-pipelines.yml | 66 ++++++ atlassian/bitbucket/6.10.0/entrypoint.sh | 57 +++++ atlassian/bitbucket/latest/Dockerfile | 2 +- 10 files changed, 402 insertions(+), 2 deletions(-) create mode 100644 atlassian/bitbucket/6.10.0/.docker-repository.yml create mode 100644 atlassian/bitbucket/6.10.0/.dockerignore create mode 100644 atlassian/bitbucket/6.10.0/Dockerfile create mode 100644 atlassian/bitbucket/6.10.0/Makefile create mode 100644 atlassian/bitbucket/6.10.0/README.md create mode 100644 atlassian/bitbucket/6.10.0/bitbucket-pipelines.yml create mode 100644 atlassian/bitbucket/6.10.0/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index 848deb03d..82a30d0b6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -517,9 +517,15 @@ matrix: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/bitbucket:6.9.1 atlassian/bitbucket/6.9.1 - docker push epicmorg/bitbucket:6.9.1 - + ########## + - name: Bitbucket 6.10.0 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.10.0 atlassian/bitbucket/6.10.0 + - docker push epicmorg/bitbucket:6.10.0 + ######################################### #### Our Confluence images ######################################### diff --git a/CHANGELOG.md b/CHANGELOG.md index 281a628c9..153d03d13 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,7 @@ * added `Bitbucket 6.7.x`: `6.7.3` * added `Bitbucket 6.8.x`: `6.8.2` * added `Bitbucket 6.9.x`: `6.9.0`, `6.9.1` + * added `Bitbucket 6.10.x`: `6.10.0` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/bitbucket/6.10.0/.docker-repository.yml b/atlassian/bitbucket/6.10.0/.docker-repository.yml new file mode 100644 index 000000000..6a0e5da83 --- /dev/null +++ b/atlassian/bitbucket/6.10.0/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.10.0/.dockerignore b/atlassian/bitbucket/6.10.0/.dockerignore new file mode 100644 index 000000000..f5523d40c --- /dev/null +++ b/atlassian/bitbucket/6.10.0/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea diff --git a/atlassian/bitbucket/6.10.0/Dockerfile b/atlassian/bitbucket/6.10.0/Dockerfile new file mode 100644 index 000000000..053caa0ff --- /dev/null +++ b/atlassian/bitbucket/6.10.0/Dockerfile @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.10.0 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.10.0/Makefile b/atlassian/bitbucket/6.10.0/Makefile new file mode 100644 index 000000000..4d2d6aed8 --- /dev/null +++ b/atlassian/bitbucket/6.10.0/Makefile @@ -0,0 +1,5 @@ +all: bitbucket + +bitbucket: + docker build --compress -t epicmorg/bitbucket:6.10.0 . + docker push epicmorg/bitbucket:6.10.0 diff --git a/atlassian/bitbucket/6.10.0/README.md b/atlassian/bitbucket/6.10.0/README.md new file mode 100644 index 000000000..b60c42068 --- /dev/null +++ b/atlassian/bitbucket/6.10.0/README.md @@ -0,0 +1,216 @@ +![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) + +Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. + +Learn more about Bitbucket Server: + +# Overview + +This Docker container makes it easy to get an instance of Bitbucket up and running. + +** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** + +# Quick Start + +For the `BITBUCKET_HOME` directory that is used to store the repository data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. + +Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. + + $> docker volume create --name bitbucketVolume + $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +Note that this command can substitute folder paths with named volumes. + +Start Atlassian Bitbucket Server: + + $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate both the application server +and the git processes. +See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ + +## Reverse Proxy Settings + +If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), +then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below +environment variables. + +### Bitbucket Server 5.0 + + +Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. + +In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. + +#### secure-bitbucket.env +``` +SERVER_SECURE=true +SERVER_SCHEME=https +SERVER_PROXY_PORT=443 +SERVER_PROXY_NAME= +``` + +Then you run Bitbucket as usual + +`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` + +### Bitbucket Server < 5.0 + +To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which bitbucket is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. + +## JVM Configuration (Bitbucket Server 5.0 + only) + +If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below + +* `JVM_MINIMUM_MEMORY` (default: 512m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) + + Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store + +## Application Mode Settings (Bitbucket Server 5.0 + only) + +This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. +You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: + +* `ELASTICSEARCH_ENABLED` (default: true) + + Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster + +* `APPLICATION_MODE` (default: default) + + The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. + +* `HAZELCAST_NETWORK_MULTICAST` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP` (default: false) + + Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. + +* `HAZELCAST_NETWORK_TCPIP_MEMBERS` + + Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' + +* `HAZELCAST_GROUP_NAME` + + Data Center: Specifies the cluster group the instance should join. + +* `HAZELCAST_GROUP_PASSWORD` + + Data Center: The password required to join the specified cluster group. + +To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. + +Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. + + $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork + $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ + -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ + -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ + -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + +## JMX Monitoring (Bitbucket Server 5.0 + only) + +Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) + +* `JMX_ENABLED` (default: false) + + Enable Bitbucket to publish JMX data + +* `JMX_REMOTE_AUTH` (default: NONE) + + Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled + +* `JMX_REMOTE_PORT` (default: 3333) + + The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer + +* `JMX_REMOTE_RMI_PORT` (default: ) + + The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer + +* `RMI_SERVER_HOSTNAME` (default: NONE) + + The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. + +* `JMX_PASSWORD_FILE` (default: NONE) + + The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" + + $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ + -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ + -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server + +# Upgrade + +To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` +container and start a new one based on a more recent image: + + $> docker stop bitbucket + $> docker rm bitbucket + $> docker pull atlassian/bitbucket-server: + $> docker run ... (See above) + +As your data is stored in the data volume directory on the host it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `bitbucket` +container and its volumes using the `-v` option._ + +# Backup + +For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). + +The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. + +Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) + +# Versioning + +The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. + +However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. +You can use a specific minor version of Bitbucket Server by using a version number +tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that +is available. + + +# Issue tracker + +Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. + +# Support + +For product support, go to [support.atlassian.com](https://support.atlassian.com/) +Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. +Support us • Feedback? diff --git a/atlassian/bitbucket/6.10.0/bitbucket-pipelines.yml b/atlassian/bitbucket/6.10.0/bitbucket-pipelines.yml new file mode 100644 index 000000000..231d79e9e --- /dev/null +++ b/atlassian/bitbucket/6.10.0/bitbucket-pipelines.yml @@ -0,0 +1,66 @@ +image: dchevell/docker-release-maker:latest +clone: + depth: full + +pipelines: + custom: + create-release-base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --create + create-release-base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --create + test: + - step: + image: docker:stable-git + script: + # Run bitbucket docker image + - mkdir -p data + - | + docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ + --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server + # Run tests + - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh + - ./test-bitbucket-status.sh + services: + - docker + + branches: + base-5: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-5' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='alpine' + - python /usr/src/app/run.py --update + base-6: + - step: + script: + - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} + - git fetch --all + - export BASE_BRANCH='base-6' + - export MAC_PRODUCT_KEY='bitbucket' + - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' + - export DEFAULT_RELEASE='true' + - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' + - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.10.0/entrypoint.sh b/atlassian/bitbucket/6.10.0/entrypoint.sh new file mode 100644 index 000000000..842224a8c --- /dev/null +++ b/atlassian/bitbucket/6.10.0/entrypoint.sh @@ -0,0 +1,57 @@ +#!/bin/bash +set -euo pipefail + +# Set recommended umask of "u=,g=w,o=rwx" (0027) +umask 0027 + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + +#export PATH=$JAVA_HOME/bin:$PATH + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +: ${JAVA_OPTS:=} + +: ${ELASTICSEARCH_ENABLED:=true} +: ${APPLICATION_MODE:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" + +ARGS="$@" + +# Start Bitbucket without Elasticsearch +if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then + ARGS="--no-search ${ARGS}" +fi + +# Start Bitbucket as the correct user. +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + echo "Updating permissions for BITBUCKET_HOME" + mkdir -p "${BITBUCKET_HOME}/lib" && + chmod -R 700 "${BITBUCKET_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" +else + exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} +fi diff --git a/atlassian/bitbucket/latest/Dockerfile b/atlassian/bitbucket/latest/Dockerfile index 239ce3eaa..053caa0ff 100644 --- a/atlassian/bitbucket/latest/Dockerfile +++ b/atlassian/bitbucket/latest/Dockerfile @@ -5,7 +5,7 @@ ARG DEBIAN_FRONTEND=noninteractive ################################################################## # ARGuments ################################################################## -ARG BITBUCKET_VERSION=6.8.1 +ARG BITBUCKET_VERSION=6.10.0 ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz ################################################################## From a1eccb587c3fa37e2b787fbf0be3665d106fee92 Mon Sep 17 00:00:00 2001 From: stam Date: Wed, 15 Jan 2020 20:26:13 +0300 Subject: [PATCH 25/50] Update LICENSE.md --- LICENSE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE.md b/LICENSE.md index 2aef77205..25a42e608 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2018 EpicMorg: Main +Copyright (c) 2018-2020 EpicMorg: Main Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From ee1aa58f1c79b4267fc7f75080db2cb0d2cb953a Mon Sep 17 00:00:00 2001 From: stam Date: Thu, 16 Jan 2020 13:14:15 +0300 Subject: [PATCH 26/50] Confluence 6.0 --- .travis.yml | 42 ++++++ CHANGELOG.md | 3 +- .../confluence/6.0.1/.docker-repository.yml | 1 + atlassian/confluence/6.0.1/.dockerignore | 3 + atlassian/confluence/6.0.1/Dockerfile | 46 ++++++ atlassian/confluence/6.0.1/Makefile | 5 + atlassian/confluence/6.0.1/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.0.1/entrypoint.sh | 39 ++++++ .../confluence/6.0.2/.docker-repository.yml | 1 + atlassian/confluence/6.0.2/.dockerignore | 3 + atlassian/confluence/6.0.2/Dockerfile | 46 ++++++ atlassian/confluence/6.0.2/Makefile | 5 + atlassian/confluence/6.0.2/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.0.2/entrypoint.sh | 39 ++++++ .../confluence/6.0.3/.docker-repository.yml | 1 + atlassian/confluence/6.0.3/.dockerignore | 3 + atlassian/confluence/6.0.3/Dockerfile | 46 ++++++ atlassian/confluence/6.0.3/Makefile | 5 + atlassian/confluence/6.0.3/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.0.3/entrypoint.sh | 39 ++++++ .../confluence/6.0.4/.docker-repository.yml | 1 + atlassian/confluence/6.0.4/.dockerignore | 3 + atlassian/confluence/6.0.4/Dockerfile | 46 ++++++ atlassian/confluence/6.0.4/Makefile | 5 + atlassian/confluence/6.0.4/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.0.4/entrypoint.sh | 39 ++++++ .../confluence/6.0.5/.docker-repository.yml | 1 + atlassian/confluence/6.0.5/.dockerignore | 3 + atlassian/confluence/6.0.5/Dockerfile | 46 ++++++ atlassian/confluence/6.0.5/Makefile | 5 + atlassian/confluence/6.0.5/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.0.5/entrypoint.sh | 39 ++++++ .../confluence/6.0.6/.docker-repository.yml | 1 + atlassian/confluence/6.0.6/.dockerignore | 3 + atlassian/confluence/6.0.6/Dockerfile | 46 ++++++ atlassian/confluence/6.0.6/Makefile | 5 + atlassian/confluence/6.0.6/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.0.6/entrypoint.sh | 39 ++++++ .../confluence/6.0.7/.docker-repository.yml | 1 + atlassian/confluence/6.0.7/.dockerignore | 3 + atlassian/confluence/6.0.7/Dockerfile | 46 ++++++ atlassian/confluence/6.0.7/Makefile | 5 + atlassian/confluence/6.0.7/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.0.7/entrypoint.sh | 39 ++++++ 44 files changed, 1619 insertions(+), 1 deletion(-) create mode 100644 atlassian/confluence/6.0.1/.docker-repository.yml create mode 100644 atlassian/confluence/6.0.1/.dockerignore create mode 100644 atlassian/confluence/6.0.1/Dockerfile create mode 100644 atlassian/confluence/6.0.1/Makefile create mode 100644 atlassian/confluence/6.0.1/README.md create mode 100644 atlassian/confluence/6.0.1/entrypoint.sh create mode 100644 atlassian/confluence/6.0.2/.docker-repository.yml create mode 100644 atlassian/confluence/6.0.2/.dockerignore create mode 100644 atlassian/confluence/6.0.2/Dockerfile create mode 100644 atlassian/confluence/6.0.2/Makefile create mode 100644 atlassian/confluence/6.0.2/README.md create mode 100644 atlassian/confluence/6.0.2/entrypoint.sh create mode 100644 atlassian/confluence/6.0.3/.docker-repository.yml create mode 100644 atlassian/confluence/6.0.3/.dockerignore create mode 100644 atlassian/confluence/6.0.3/Dockerfile create mode 100644 atlassian/confluence/6.0.3/Makefile create mode 100644 atlassian/confluence/6.0.3/README.md create mode 100644 atlassian/confluence/6.0.3/entrypoint.sh create mode 100644 atlassian/confluence/6.0.4/.docker-repository.yml create mode 100644 atlassian/confluence/6.0.4/.dockerignore create mode 100644 atlassian/confluence/6.0.4/Dockerfile create mode 100644 atlassian/confluence/6.0.4/Makefile create mode 100644 atlassian/confluence/6.0.4/README.md create mode 100644 atlassian/confluence/6.0.4/entrypoint.sh create mode 100644 atlassian/confluence/6.0.5/.docker-repository.yml create mode 100644 atlassian/confluence/6.0.5/.dockerignore create mode 100644 atlassian/confluence/6.0.5/Dockerfile create mode 100644 atlassian/confluence/6.0.5/Makefile create mode 100644 atlassian/confluence/6.0.5/README.md create mode 100644 atlassian/confluence/6.0.5/entrypoint.sh create mode 100644 atlassian/confluence/6.0.6/.docker-repository.yml create mode 100644 atlassian/confluence/6.0.6/.dockerignore create mode 100644 atlassian/confluence/6.0.6/Dockerfile create mode 100644 atlassian/confluence/6.0.6/Makefile create mode 100644 atlassian/confluence/6.0.6/README.md create mode 100644 atlassian/confluence/6.0.6/entrypoint.sh create mode 100644 atlassian/confluence/6.0.7/.docker-repository.yml create mode 100644 atlassian/confluence/6.0.7/.dockerignore create mode 100644 atlassian/confluence/6.0.7/Dockerfile create mode 100644 atlassian/confluence/6.0.7/Makefile create mode 100644 atlassian/confluence/6.0.7/README.md create mode 100644 atlassian/confluence/6.0.7/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index 82a30d0b6..fc6542c4c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -530,6 +530,32 @@ matrix: #### Our Confluence images ######################################### + - name: Confluence 6.0.x + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + + - docker build --compress -t epicmorg/confluence:6.0.1 atlassian/confluence/6.0.1 + - docker push epicmorg/confluence:6.0.1 + + - docker build --compress -t epicmorg/confluence:6.0.2 atlassian/confluence/6.0.2 + - docker push epicmorg/confluence:6.0.2 + + - docker build --compress -t epicmorg/confluence:6.0.3 atlassian/confluence/6.0.3 + - docker push epicmorg/confluence:6.0.3 + + - docker build --compress -t epicmorg/confluence:6.0.4 atlassian/confluence/6.0.4 + - docker push epicmorg/confluence:6.0.4 + + - docker build --compress -t epicmorg/confluence:6.0.5 atlassian/confluence/6.0.5 + - docker push epicmorg/confluence:6.0.1 + + - docker build --compress -t epicmorg/confluence:6.0.6 atlassian/confluence/6.0.6 + - docker push epicmorg/confluence:6.0.1 + + - docker build --compress -t epicmorg/confluence:6.0.7 atlassian/confluence/6.0.7 + - docker push epicmorg/confluence:6.0.7 +########## + - name: Confluence 6.9.0 script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin @@ -548,6 +574,8 @@ matrix: - docker build --compress -t epicmorg/confluence:6.9.3 atlassian/confluence/6.9.3 - docker push epicmorg/confluence:6.9.3 +########## + - name: Confluence 6.10.0 script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin @@ -566,6 +594,8 @@ matrix: - docker build --compress -t epicmorg/confluence:6.10.2 atlassian/confluence/6.10.2 - docker push epicmorg/confluence:6.10.2 +########## + - name: Confluence 6.11.0 script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin @@ -584,6 +614,8 @@ matrix: - docker build --compress -t epicmorg/confluence:6.11.2 atlassian/confluence/6.11.2 - docker push epicmorg/confluence:6.11.2 +########## + - name: Confluence 6.12.0 script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin @@ -614,6 +646,8 @@ matrix: - docker build --compress -t epicmorg/confluence:6.12.4 atlassian/confluence/6.12.4 - docker push epicmorg/confluence:6.12.4 +########## + - name: Confluence 6.13.0 script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin @@ -644,6 +678,8 @@ matrix: - docker build --compress -t epicmorg/confluence:6.13.4 atlassian/confluence/6.13.4 - docker push epicmorg/confluence:6.13.4 +########## + - name: Confluence 6.14.0 script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin @@ -668,6 +704,8 @@ matrix: - docker build --compress -t epicmorg/confluence:6.14.3 atlassian/confluence/6.14.3 - docker push epicmorg/confluence:6.14.3 +########## + - name: Confluence 6.15.1 script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin @@ -710,6 +748,8 @@ matrix: - docker build --compress -t epicmorg/confluence:6.15.9 atlassian/confluence/6.15.9 - docker push epicmorg/confluence:6.15.9 +########## + - name: Confluence 7.0.1 script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin @@ -737,6 +777,7 @@ matrix: - docker build --compress -t epicmorg/confluence:7.0.4 atlassian/confluence/7.0.4 - docker push epicmorg/confluence:7.0.4 +########## - name: Confluence 7.1.0 script: @@ -758,6 +799,7 @@ matrix: - docker build --compress -t epicmorg/confluence:7.1.2 atlassian/confluence/7.1.2 - docker push epicmorg/confluence:7.1.2 +########## - name: Confluence 7.2.0 script: diff --git a/CHANGELOG.md b/CHANGELOG.md index 153d03d13..ae91665fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ ## Changelog -* `January 2020` (01/13/2020 - 01/15/2020) +* `January 2020` (01/13/2020 - 01/16/2020) * separated `base` images to `prod`, `prod:jdk8`, `prod:jdk11`, `devel`, `devel:jdk8`, `devel:jdk11` * teamcity - `devel:jdk11` * updated current atlassian contaners: @@ -30,6 +30,7 @@ * added `Bitbucket 6.8.x`: `6.8.2` * added `Bitbucket 6.9.x`: `6.9.0`, `6.9.1` * added `Bitbucket 6.10.x`: `6.10.0` + * added `Confluence 6.0.x`: `6.0.1`, `6.0.2`, `6.0.3`, `6.0.4`, `6.0.5`, `6.0.6`, `6.0.7` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/confluence/6.0.1/.docker-repository.yml b/atlassian/confluence/6.0.1/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.0.1/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.0.1/.dockerignore b/atlassian/confluence/6.0.1/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.0.1/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.0.1/Dockerfile b/atlassian/confluence/6.0.1/Dockerfile new file mode 100644 index 000000000..60a125dfc --- /dev/null +++ b/atlassian/confluence/6.0.1/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.0.1 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.0.1/Makefile b/atlassian/confluence/6.0.1/Makefile new file mode 100644 index 000000000..54e5248ee --- /dev/null +++ b/atlassian/confluence/6.0.1/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.0.1 . + diff --git a/atlassian/confluence/6.0.1/README.md b/atlassian/confluence/6.0.1/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.0.1/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.0.1/entrypoint.sh b/atlassian/confluence/6.0.1/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.0.1/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.0.2/.docker-repository.yml b/atlassian/confluence/6.0.2/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.0.2/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.0.2/.dockerignore b/atlassian/confluence/6.0.2/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.0.2/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.0.2/Dockerfile b/atlassian/confluence/6.0.2/Dockerfile new file mode 100644 index 000000000..5d6a9c22f --- /dev/null +++ b/atlassian/confluence/6.0.2/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.0.2 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.0.2/Makefile b/atlassian/confluence/6.0.2/Makefile new file mode 100644 index 000000000..bf0b01cd0 --- /dev/null +++ b/atlassian/confluence/6.0.2/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.0.2 . + diff --git a/atlassian/confluence/6.0.2/README.md b/atlassian/confluence/6.0.2/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.0.2/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.0.2/entrypoint.sh b/atlassian/confluence/6.0.2/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.0.2/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.0.3/.docker-repository.yml b/atlassian/confluence/6.0.3/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.0.3/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.0.3/.dockerignore b/atlassian/confluence/6.0.3/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.0.3/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.0.3/Dockerfile b/atlassian/confluence/6.0.3/Dockerfile new file mode 100644 index 000000000..477bff4c3 --- /dev/null +++ b/atlassian/confluence/6.0.3/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.0.3 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.0.3/Makefile b/atlassian/confluence/6.0.3/Makefile new file mode 100644 index 000000000..600150ad2 --- /dev/null +++ b/atlassian/confluence/6.0.3/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.0.3 . + diff --git a/atlassian/confluence/6.0.3/README.md b/atlassian/confluence/6.0.3/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.0.3/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.0.3/entrypoint.sh b/atlassian/confluence/6.0.3/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.0.3/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.0.4/.docker-repository.yml b/atlassian/confluence/6.0.4/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.0.4/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.0.4/.dockerignore b/atlassian/confluence/6.0.4/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.0.4/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.0.4/Dockerfile b/atlassian/confluence/6.0.4/Dockerfile new file mode 100644 index 000000000..67f277e57 --- /dev/null +++ b/atlassian/confluence/6.0.4/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.0.4 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.0.4/Makefile b/atlassian/confluence/6.0.4/Makefile new file mode 100644 index 000000000..295c8f338 --- /dev/null +++ b/atlassian/confluence/6.0.4/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.0.4 . + diff --git a/atlassian/confluence/6.0.4/README.md b/atlassian/confluence/6.0.4/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.0.4/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.0.4/entrypoint.sh b/atlassian/confluence/6.0.4/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.0.4/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.0.5/.docker-repository.yml b/atlassian/confluence/6.0.5/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.0.5/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.0.5/.dockerignore b/atlassian/confluence/6.0.5/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.0.5/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.0.5/Dockerfile b/atlassian/confluence/6.0.5/Dockerfile new file mode 100644 index 000000000..7402d12b4 --- /dev/null +++ b/atlassian/confluence/6.0.5/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.0.5 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.0.5/Makefile b/atlassian/confluence/6.0.5/Makefile new file mode 100644 index 000000000..df010b00f --- /dev/null +++ b/atlassian/confluence/6.0.5/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.0.5 . + diff --git a/atlassian/confluence/6.0.5/README.md b/atlassian/confluence/6.0.5/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.0.5/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.0.5/entrypoint.sh b/atlassian/confluence/6.0.5/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.0.5/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.0.6/.docker-repository.yml b/atlassian/confluence/6.0.6/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.0.6/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.0.6/.dockerignore b/atlassian/confluence/6.0.6/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.0.6/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.0.6/Dockerfile b/atlassian/confluence/6.0.6/Dockerfile new file mode 100644 index 000000000..54aab7128 --- /dev/null +++ b/atlassian/confluence/6.0.6/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.0.6 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.0.6/Makefile b/atlassian/confluence/6.0.6/Makefile new file mode 100644 index 000000000..415f855d5 --- /dev/null +++ b/atlassian/confluence/6.0.6/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.0.6 . + diff --git a/atlassian/confluence/6.0.6/README.md b/atlassian/confluence/6.0.6/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.0.6/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.0.6/entrypoint.sh b/atlassian/confluence/6.0.6/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.0.6/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.0.7/.docker-repository.yml b/atlassian/confluence/6.0.7/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.0.7/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.0.7/.dockerignore b/atlassian/confluence/6.0.7/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.0.7/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.0.7/Dockerfile b/atlassian/confluence/6.0.7/Dockerfile new file mode 100644 index 000000000..62a0c388c --- /dev/null +++ b/atlassian/confluence/6.0.7/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.0.7 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.0.7/Makefile b/atlassian/confluence/6.0.7/Makefile new file mode 100644 index 000000000..319483387 --- /dev/null +++ b/atlassian/confluence/6.0.7/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.0.7 . + diff --git a/atlassian/confluence/6.0.7/README.md b/atlassian/confluence/6.0.7/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.0.7/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.0.7/entrypoint.sh b/atlassian/confluence/6.0.7/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.0.7/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi From 7086b48a65dd426f2f46a1a9efadfbca60387d78 Mon Sep 17 00:00:00 2001 From: stam Date: Thu, 16 Jan 2020 14:05:07 +0300 Subject: [PATCH 27/50] Confluence 6.1 --- .travis.yml | 22 +++ CHANGELOG.md | 1 + .../confluence/6.1.0/.docker-repository.yml | 1 + atlassian/confluence/6.1.0/.dockerignore | 3 + atlassian/confluence/6.1.0/Dockerfile | 46 ++++++ atlassian/confluence/6.1.0/Makefile | 5 + atlassian/confluence/6.1.0/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.1.0/entrypoint.sh | 39 ++++++ .../confluence/6.1.1/.docker-repository.yml | 1 + atlassian/confluence/6.1.1/.dockerignore | 3 + atlassian/confluence/6.1.1/Dockerfile | 46 ++++++ atlassian/confluence/6.1.1/Makefile | 5 + atlassian/confluence/6.1.1/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.1.1/entrypoint.sh | 39 ++++++ .../confluence/6.1.2/.docker-repository.yml | 1 + atlassian/confluence/6.1.2/.dockerignore | 3 + atlassian/confluence/6.1.2/Dockerfile | 46 ++++++ atlassian/confluence/6.1.2/Makefile | 5 + atlassian/confluence/6.1.2/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.1.2/entrypoint.sh | 39 ++++++ .../confluence/6.1.3/.docker-repository.yml | 1 + atlassian/confluence/6.1.3/.dockerignore | 3 + atlassian/confluence/6.1.3/Dockerfile | 46 ++++++ atlassian/confluence/6.1.3/Makefile | 5 + atlassian/confluence/6.1.3/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.1.3/entrypoint.sh | 39 ++++++ .../confluence/6.1.4/.docker-repository.yml | 1 + atlassian/confluence/6.1.4/.dockerignore | 3 + atlassian/confluence/6.1.4/Dockerfile | 46 ++++++ atlassian/confluence/6.1.4/Makefile | 5 + atlassian/confluence/6.1.4/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.1.4/entrypoint.sh | 39 ++++++ 32 files changed, 1148 insertions(+) create mode 100644 atlassian/confluence/6.1.0/.docker-repository.yml create mode 100644 atlassian/confluence/6.1.0/.dockerignore create mode 100644 atlassian/confluence/6.1.0/Dockerfile create mode 100644 atlassian/confluence/6.1.0/Makefile create mode 100644 atlassian/confluence/6.1.0/README.md create mode 100644 atlassian/confluence/6.1.0/entrypoint.sh create mode 100644 atlassian/confluence/6.1.1/.docker-repository.yml create mode 100644 atlassian/confluence/6.1.1/.dockerignore create mode 100644 atlassian/confluence/6.1.1/Dockerfile create mode 100644 atlassian/confluence/6.1.1/Makefile create mode 100644 atlassian/confluence/6.1.1/README.md create mode 100644 atlassian/confluence/6.1.1/entrypoint.sh create mode 100644 atlassian/confluence/6.1.2/.docker-repository.yml create mode 100644 atlassian/confluence/6.1.2/.dockerignore create mode 100644 atlassian/confluence/6.1.2/Dockerfile create mode 100644 atlassian/confluence/6.1.2/Makefile create mode 100644 atlassian/confluence/6.1.2/README.md create mode 100644 atlassian/confluence/6.1.2/entrypoint.sh create mode 100644 atlassian/confluence/6.1.3/.docker-repository.yml create mode 100644 atlassian/confluence/6.1.3/.dockerignore create mode 100644 atlassian/confluence/6.1.3/Dockerfile create mode 100644 atlassian/confluence/6.1.3/Makefile create mode 100644 atlassian/confluence/6.1.3/README.md create mode 100644 atlassian/confluence/6.1.3/entrypoint.sh create mode 100644 atlassian/confluence/6.1.4/.docker-repository.yml create mode 100644 atlassian/confluence/6.1.4/.dockerignore create mode 100644 atlassian/confluence/6.1.4/Dockerfile create mode 100644 atlassian/confluence/6.1.4/Makefile create mode 100644 atlassian/confluence/6.1.4/README.md create mode 100644 atlassian/confluence/6.1.4/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index fc6542c4c..d42e6a2d3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -554,6 +554,28 @@ matrix: - docker build --compress -t epicmorg/confluence:6.0.7 atlassian/confluence/6.0.7 - docker push epicmorg/confluence:6.0.7 + +########## + + - name: Confluence 6.1.x + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + + - docker build --compress -t epicmorg/confluence:6.1.0 atlassian/confluence/6.1.0 + - docker push epicmorg/confluence:6.1.0 + + - docker build --compress -t epicmorg/confluence:6.1.1 atlassian/confluence/6.1.1 + - docker push epicmorg/confluence:6.1.1 + + - docker build --compress -t epicmorg/confluence:6.1.2 atlassian/confluence/6.1.2 + - docker push epicmorg/confluence:6.1.2 + + - docker build --compress -t epicmorg/confluence:6.1.3 atlassian/confluence/6.1.3 + - docker push epicmorg/confluence:6.1.3 + + - docker build --compress -t epicmorg/confluence:6.1.4 atlassian/confluence/6.1.4 + - docker push epicmorg/confluence:6.1.4 + ########## - name: Confluence 6.9.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index ae91665fc..fa674f6ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,7 @@ * added `Bitbucket 6.9.x`: `6.9.0`, `6.9.1` * added `Bitbucket 6.10.x`: `6.10.0` * added `Confluence 6.0.x`: `6.0.1`, `6.0.2`, `6.0.3`, `6.0.4`, `6.0.5`, `6.0.6`, `6.0.7` + * added `Confluence 6.1.x`: `6.1.0`, `6.1.1`, `6.1.2`, `6.1.3`, `6.1.4` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/confluence/6.1.0/.docker-repository.yml b/atlassian/confluence/6.1.0/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.1.0/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.1.0/.dockerignore b/atlassian/confluence/6.1.0/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.1.0/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.1.0/Dockerfile b/atlassian/confluence/6.1.0/Dockerfile new file mode 100644 index 000000000..9e5c98eb9 --- /dev/null +++ b/atlassian/confluence/6.1.0/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.1.0 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.1.0/Makefile b/atlassian/confluence/6.1.0/Makefile new file mode 100644 index 000000000..a85eda5df --- /dev/null +++ b/atlassian/confluence/6.1.0/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.1.0 . + diff --git a/atlassian/confluence/6.1.0/README.md b/atlassian/confluence/6.1.0/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.1.0/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.1.0/entrypoint.sh b/atlassian/confluence/6.1.0/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.1.0/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.1.1/.docker-repository.yml b/atlassian/confluence/6.1.1/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.1.1/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.1.1/.dockerignore b/atlassian/confluence/6.1.1/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.1.1/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.1.1/Dockerfile b/atlassian/confluence/6.1.1/Dockerfile new file mode 100644 index 000000000..66b185a7e --- /dev/null +++ b/atlassian/confluence/6.1.1/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.1.1 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.1.1/Makefile b/atlassian/confluence/6.1.1/Makefile new file mode 100644 index 000000000..79cbcdbfb --- /dev/null +++ b/atlassian/confluence/6.1.1/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.1.1 . + diff --git a/atlassian/confluence/6.1.1/README.md b/atlassian/confluence/6.1.1/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.1.1/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.1.1/entrypoint.sh b/atlassian/confluence/6.1.1/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.1.1/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.1.2/.docker-repository.yml b/atlassian/confluence/6.1.2/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.1.2/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.1.2/.dockerignore b/atlassian/confluence/6.1.2/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.1.2/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.1.2/Dockerfile b/atlassian/confluence/6.1.2/Dockerfile new file mode 100644 index 000000000..1a8620f8d --- /dev/null +++ b/atlassian/confluence/6.1.2/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.1.2 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.1.2/Makefile b/atlassian/confluence/6.1.2/Makefile new file mode 100644 index 000000000..384fecef4 --- /dev/null +++ b/atlassian/confluence/6.1.2/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.1.2 . + diff --git a/atlassian/confluence/6.1.2/README.md b/atlassian/confluence/6.1.2/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.1.2/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.1.2/entrypoint.sh b/atlassian/confluence/6.1.2/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.1.2/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.1.3/.docker-repository.yml b/atlassian/confluence/6.1.3/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.1.3/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.1.3/.dockerignore b/atlassian/confluence/6.1.3/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.1.3/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.1.3/Dockerfile b/atlassian/confluence/6.1.3/Dockerfile new file mode 100644 index 000000000..8bde4a010 --- /dev/null +++ b/atlassian/confluence/6.1.3/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.1.3 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.1.3/Makefile b/atlassian/confluence/6.1.3/Makefile new file mode 100644 index 000000000..5123e62e9 --- /dev/null +++ b/atlassian/confluence/6.1.3/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.1.3 . + diff --git a/atlassian/confluence/6.1.3/README.md b/atlassian/confluence/6.1.3/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.1.3/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.1.3/entrypoint.sh b/atlassian/confluence/6.1.3/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.1.3/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.1.4/.docker-repository.yml b/atlassian/confluence/6.1.4/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.1.4/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.1.4/.dockerignore b/atlassian/confluence/6.1.4/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.1.4/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.1.4/Dockerfile b/atlassian/confluence/6.1.4/Dockerfile new file mode 100644 index 000000000..57b685395 --- /dev/null +++ b/atlassian/confluence/6.1.4/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.1.4 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.1.4/Makefile b/atlassian/confluence/6.1.4/Makefile new file mode 100644 index 000000000..06c417023 --- /dev/null +++ b/atlassian/confluence/6.1.4/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.1.4 . + diff --git a/atlassian/confluence/6.1.4/README.md b/atlassian/confluence/6.1.4/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.1.4/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.1.4/entrypoint.sh b/atlassian/confluence/6.1.4/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.1.4/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi From 644d5d6581c288d27e6da51ae6de639d4d7f1703 Mon Sep 17 00:00:00 2001 From: stam Date: Thu, 16 Jan 2020 14:49:22 +0300 Subject: [PATCH 28/50] Confluence 6.2 --- .travis.yml | 18 +++ CHANGELOG.md | 1 + .../confluence/6.2.0/.docker-repository.yml | 1 + atlassian/confluence/6.2.0/.dockerignore | 3 + atlassian/confluence/6.2.0/Dockerfile | 46 ++++++ atlassian/confluence/6.2.0/Makefile | 5 + atlassian/confluence/6.2.0/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.2.0/entrypoint.sh | 39 ++++++ .../confluence/6.2.1/.docker-repository.yml | 1 + atlassian/confluence/6.2.1/.dockerignore | 3 + atlassian/confluence/6.2.1/Dockerfile | 46 ++++++ atlassian/confluence/6.2.1/Makefile | 5 + atlassian/confluence/6.2.1/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.2.1/entrypoint.sh | 39 ++++++ .../confluence/6.2.3/.docker-repository.yml | 1 + atlassian/confluence/6.2.3/.dockerignore | 3 + atlassian/confluence/6.2.3/Dockerfile | 46 ++++++ atlassian/confluence/6.2.3/Makefile | 5 + atlassian/confluence/6.2.3/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.2.3/entrypoint.sh | 39 ++++++ .../confluence/6.2.4/.docker-repository.yml | 1 + atlassian/confluence/6.2.4/.dockerignore | 3 + atlassian/confluence/6.2.4/Dockerfile | 46 ++++++ atlassian/confluence/6.2.4/Makefile | 5 + atlassian/confluence/6.2.4/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.2.4/entrypoint.sh | 39 ++++++ 26 files changed, 919 insertions(+) create mode 100644 atlassian/confluence/6.2.0/.docker-repository.yml create mode 100644 atlassian/confluence/6.2.0/.dockerignore create mode 100644 atlassian/confluence/6.2.0/Dockerfile create mode 100644 atlassian/confluence/6.2.0/Makefile create mode 100644 atlassian/confluence/6.2.0/README.md create mode 100644 atlassian/confluence/6.2.0/entrypoint.sh create mode 100644 atlassian/confluence/6.2.1/.docker-repository.yml create mode 100644 atlassian/confluence/6.2.1/.dockerignore create mode 100644 atlassian/confluence/6.2.1/Dockerfile create mode 100644 atlassian/confluence/6.2.1/Makefile create mode 100644 atlassian/confluence/6.2.1/README.md create mode 100644 atlassian/confluence/6.2.1/entrypoint.sh create mode 100644 atlassian/confluence/6.2.3/.docker-repository.yml create mode 100644 atlassian/confluence/6.2.3/.dockerignore create mode 100644 atlassian/confluence/6.2.3/Dockerfile create mode 100644 atlassian/confluence/6.2.3/Makefile create mode 100644 atlassian/confluence/6.2.3/README.md create mode 100644 atlassian/confluence/6.2.3/entrypoint.sh create mode 100644 atlassian/confluence/6.2.4/.docker-repository.yml create mode 100644 atlassian/confluence/6.2.4/.dockerignore create mode 100644 atlassian/confluence/6.2.4/Dockerfile create mode 100644 atlassian/confluence/6.2.4/Makefile create mode 100644 atlassian/confluence/6.2.4/README.md create mode 100644 atlassian/confluence/6.2.4/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index d42e6a2d3..f9ab7f302 100644 --- a/.travis.yml +++ b/.travis.yml @@ -576,6 +576,24 @@ matrix: - docker build --compress -t epicmorg/confluence:6.1.4 atlassian/confluence/6.1.4 - docker push epicmorg/confluence:6.1.4 +########## + + - name: Confluence 6.2.x + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + + - docker build --compress -t epicmorg/confluence:6.2.0 atlassian/confluence/6.2.0 + - docker push epicmorg/confluence:6.2.0 + + - docker build --compress -t epicmorg/confluence:6.2.1 atlassian/confluence/6.2.1 + - docker push epicmorg/confluence:6.2.1 + + - docker build --compress -t epicmorg/confluence:6.2.3 atlassian/confluence/6.2.3 + - docker push epicmorg/confluence:6.2.3 + + - docker build --compress -t epicmorg/confluence:6.2.4 atlassian/confluence/6.2.4 + - docker push epicmorg/confluence:6.2.4 + ########## - name: Confluence 6.9.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index fa674f6ef..2ccd795f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,7 @@ * added `Bitbucket 6.10.x`: `6.10.0` * added `Confluence 6.0.x`: `6.0.1`, `6.0.2`, `6.0.3`, `6.0.4`, `6.0.5`, `6.0.6`, `6.0.7` * added `Confluence 6.1.x`: `6.1.0`, `6.1.1`, `6.1.2`, `6.1.3`, `6.1.4` + * added `Confluence 6.2.x`: `6.2.0`, `6.2.1`, `6.2.3`, `6.2.4` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/confluence/6.2.0/.docker-repository.yml b/atlassian/confluence/6.2.0/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.2.0/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.2.0/.dockerignore b/atlassian/confluence/6.2.0/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.2.0/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.2.0/Dockerfile b/atlassian/confluence/6.2.0/Dockerfile new file mode 100644 index 000000000..2918977a7 --- /dev/null +++ b/atlassian/confluence/6.2.0/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.2.0 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.2.0/Makefile b/atlassian/confluence/6.2.0/Makefile new file mode 100644 index 000000000..64a2b71a2 --- /dev/null +++ b/atlassian/confluence/6.2.0/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.2.0 . + diff --git a/atlassian/confluence/6.2.0/README.md b/atlassian/confluence/6.2.0/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.2.0/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.2.0/entrypoint.sh b/atlassian/confluence/6.2.0/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.2.0/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.2.1/.docker-repository.yml b/atlassian/confluence/6.2.1/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.2.1/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.2.1/.dockerignore b/atlassian/confluence/6.2.1/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.2.1/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.2.1/Dockerfile b/atlassian/confluence/6.2.1/Dockerfile new file mode 100644 index 000000000..a92c188e7 --- /dev/null +++ b/atlassian/confluence/6.2.1/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.2.1 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.2.1/Makefile b/atlassian/confluence/6.2.1/Makefile new file mode 100644 index 000000000..579cfc2a0 --- /dev/null +++ b/atlassian/confluence/6.2.1/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.2.1 . + diff --git a/atlassian/confluence/6.2.1/README.md b/atlassian/confluence/6.2.1/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.2.1/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.2.1/entrypoint.sh b/atlassian/confluence/6.2.1/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.2.1/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.2.3/.docker-repository.yml b/atlassian/confluence/6.2.3/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.2.3/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.2.3/.dockerignore b/atlassian/confluence/6.2.3/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.2.3/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.2.3/Dockerfile b/atlassian/confluence/6.2.3/Dockerfile new file mode 100644 index 000000000..6cb8e82b0 --- /dev/null +++ b/atlassian/confluence/6.2.3/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.2.3 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.2.3/Makefile b/atlassian/confluence/6.2.3/Makefile new file mode 100644 index 000000000..4e065a590 --- /dev/null +++ b/atlassian/confluence/6.2.3/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.2.3 . + diff --git a/atlassian/confluence/6.2.3/README.md b/atlassian/confluence/6.2.3/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.2.3/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.2.3/entrypoint.sh b/atlassian/confluence/6.2.3/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.2.3/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.2.4/.docker-repository.yml b/atlassian/confluence/6.2.4/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.2.4/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.2.4/.dockerignore b/atlassian/confluence/6.2.4/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.2.4/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.2.4/Dockerfile b/atlassian/confluence/6.2.4/Dockerfile new file mode 100644 index 000000000..5a6774b8b --- /dev/null +++ b/atlassian/confluence/6.2.4/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.2.4 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.2.4/Makefile b/atlassian/confluence/6.2.4/Makefile new file mode 100644 index 000000000..da230e169 --- /dev/null +++ b/atlassian/confluence/6.2.4/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.2.4 . + diff --git a/atlassian/confluence/6.2.4/README.md b/atlassian/confluence/6.2.4/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.2.4/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.2.4/entrypoint.sh b/atlassian/confluence/6.2.4/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.2.4/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi From fe6ad467a725b61799ae9cbdcd8670e24871c6e0 Mon Sep 17 00:00:00 2001 From: stam Date: Thu, 16 Jan 2020 14:56:15 +0300 Subject: [PATCH 29/50] Confluence 6.3 --- .travis.yml | 18 +++ CHANGELOG.md | 1 + .../confluence/6.3.1/.docker-repository.yml | 1 + atlassian/confluence/6.3.1/.dockerignore | 3 + atlassian/confluence/6.3.1/Dockerfile | 46 ++++++ atlassian/confluence/6.3.1/Makefile | 5 + atlassian/confluence/6.3.1/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.3.1/entrypoint.sh | 39 ++++++ .../confluence/6.3.2/.docker-repository.yml | 1 + atlassian/confluence/6.3.2/.dockerignore | 3 + atlassian/confluence/6.3.2/Dockerfile | 46 ++++++ atlassian/confluence/6.3.2/Makefile | 5 + atlassian/confluence/6.3.2/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.3.2/entrypoint.sh | 39 ++++++ .../confluence/6.3.3/.docker-repository.yml | 1 + atlassian/confluence/6.3.3/.dockerignore | 3 + atlassian/confluence/6.3.3/Dockerfile | 46 ++++++ atlassian/confluence/6.3.3/Makefile | 5 + atlassian/confluence/6.3.3/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.3.3/entrypoint.sh | 39 ++++++ .../confluence/6.3.4/.docker-repository.yml | 1 + atlassian/confluence/6.3.4/.dockerignore | 3 + atlassian/confluence/6.3.4/Dockerfile | 46 ++++++ atlassian/confluence/6.3.4/Makefile | 5 + atlassian/confluence/6.3.4/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.3.4/entrypoint.sh | 39 ++++++ 26 files changed, 919 insertions(+) create mode 100644 atlassian/confluence/6.3.1/.docker-repository.yml create mode 100644 atlassian/confluence/6.3.1/.dockerignore create mode 100644 atlassian/confluence/6.3.1/Dockerfile create mode 100644 atlassian/confluence/6.3.1/Makefile create mode 100644 atlassian/confluence/6.3.1/README.md create mode 100644 atlassian/confluence/6.3.1/entrypoint.sh create mode 100644 atlassian/confluence/6.3.2/.docker-repository.yml create mode 100644 atlassian/confluence/6.3.2/.dockerignore create mode 100644 atlassian/confluence/6.3.2/Dockerfile create mode 100644 atlassian/confluence/6.3.2/Makefile create mode 100644 atlassian/confluence/6.3.2/README.md create mode 100644 atlassian/confluence/6.3.2/entrypoint.sh create mode 100644 atlassian/confluence/6.3.3/.docker-repository.yml create mode 100644 atlassian/confluence/6.3.3/.dockerignore create mode 100644 atlassian/confluence/6.3.3/Dockerfile create mode 100644 atlassian/confluence/6.3.3/Makefile create mode 100644 atlassian/confluence/6.3.3/README.md create mode 100644 atlassian/confluence/6.3.3/entrypoint.sh create mode 100644 atlassian/confluence/6.3.4/.docker-repository.yml create mode 100644 atlassian/confluence/6.3.4/.dockerignore create mode 100644 atlassian/confluence/6.3.4/Dockerfile create mode 100644 atlassian/confluence/6.3.4/Makefile create mode 100644 atlassian/confluence/6.3.4/README.md create mode 100644 atlassian/confluence/6.3.4/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index f9ab7f302..35e4739ab 100644 --- a/.travis.yml +++ b/.travis.yml @@ -594,6 +594,24 @@ matrix: - docker build --compress -t epicmorg/confluence:6.2.4 atlassian/confluence/6.2.4 - docker push epicmorg/confluence:6.2.4 +########## + + - name: Confluence 6.3.x + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + + - docker build --compress -t epicmorg/confluence:6.3.1 atlassian/confluence/6.3.1 + - docker push epicmorg/confluence:6.3.1 + + - docker build --compress -t epicmorg/confluence:6.3.2 atlassian/confluence/6.3.2 + - docker push epicmorg/confluence:6.3.2 + + - docker build --compress -t epicmorg/confluence:6.3.3 atlassian/confluence/6.3.3 + - docker push epicmorg/confluence:6.3.3 + + - docker build --compress -t epicmorg/confluence:6.3.4 atlassian/confluence/6.3.4 + - docker push epicmorg/confluence:6.3.4 + ########## - name: Confluence 6.9.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ccd795f3..b00fbdbcb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ * added `Confluence 6.0.x`: `6.0.1`, `6.0.2`, `6.0.3`, `6.0.4`, `6.0.5`, `6.0.6`, `6.0.7` * added `Confluence 6.1.x`: `6.1.0`, `6.1.1`, `6.1.2`, `6.1.3`, `6.1.4` * added `Confluence 6.2.x`: `6.2.0`, `6.2.1`, `6.2.3`, `6.2.4` + * added `Confluence 6.3.x`: `6.3.1`, `6.3.2`, `6.3.3`, `6.3.4` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/confluence/6.3.1/.docker-repository.yml b/atlassian/confluence/6.3.1/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.3.1/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.3.1/.dockerignore b/atlassian/confluence/6.3.1/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.3.1/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.3.1/Dockerfile b/atlassian/confluence/6.3.1/Dockerfile new file mode 100644 index 000000000..5427ff517 --- /dev/null +++ b/atlassian/confluence/6.3.1/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.3.1 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.3.1/Makefile b/atlassian/confluence/6.3.1/Makefile new file mode 100644 index 000000000..5a829cec6 --- /dev/null +++ b/atlassian/confluence/6.3.1/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.3.1 . + diff --git a/atlassian/confluence/6.3.1/README.md b/atlassian/confluence/6.3.1/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.3.1/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.3.1/entrypoint.sh b/atlassian/confluence/6.3.1/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.3.1/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.3.2/.docker-repository.yml b/atlassian/confluence/6.3.2/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.3.2/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.3.2/.dockerignore b/atlassian/confluence/6.3.2/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.3.2/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.3.2/Dockerfile b/atlassian/confluence/6.3.2/Dockerfile new file mode 100644 index 000000000..966862883 --- /dev/null +++ b/atlassian/confluence/6.3.2/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.3.2 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.3.2/Makefile b/atlassian/confluence/6.3.2/Makefile new file mode 100644 index 000000000..87cb02a13 --- /dev/null +++ b/atlassian/confluence/6.3.2/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.3.2 . + diff --git a/atlassian/confluence/6.3.2/README.md b/atlassian/confluence/6.3.2/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.3.2/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.3.2/entrypoint.sh b/atlassian/confluence/6.3.2/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.3.2/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.3.3/.docker-repository.yml b/atlassian/confluence/6.3.3/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.3.3/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.3.3/.dockerignore b/atlassian/confluence/6.3.3/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.3.3/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.3.3/Dockerfile b/atlassian/confluence/6.3.3/Dockerfile new file mode 100644 index 000000000..0538b7412 --- /dev/null +++ b/atlassian/confluence/6.3.3/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.3.3 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.3.3/Makefile b/atlassian/confluence/6.3.3/Makefile new file mode 100644 index 000000000..3fbdcf9e3 --- /dev/null +++ b/atlassian/confluence/6.3.3/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.3.3 . + diff --git a/atlassian/confluence/6.3.3/README.md b/atlassian/confluence/6.3.3/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.3.3/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.3.3/entrypoint.sh b/atlassian/confluence/6.3.3/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.3.3/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.3.4/.docker-repository.yml b/atlassian/confluence/6.3.4/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.3.4/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.3.4/.dockerignore b/atlassian/confluence/6.3.4/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.3.4/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.3.4/Dockerfile b/atlassian/confluence/6.3.4/Dockerfile new file mode 100644 index 000000000..c5943a421 --- /dev/null +++ b/atlassian/confluence/6.3.4/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.3.4 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.3.4/Makefile b/atlassian/confluence/6.3.4/Makefile new file mode 100644 index 000000000..1505da964 --- /dev/null +++ b/atlassian/confluence/6.3.4/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.3.4 . + diff --git a/atlassian/confluence/6.3.4/README.md b/atlassian/confluence/6.3.4/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.3.4/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.3.4/entrypoint.sh b/atlassian/confluence/6.3.4/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.3.4/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi From f2d335f6cbc82e38e5a6af516a69de487489a46b Mon Sep 17 00:00:00 2001 From: stam Date: Thu, 16 Jan 2020 15:03:21 +0300 Subject: [PATCH 30/50] Confluence 6.5 --- .travis.yml | 36 +++++ CHANGELOG.md | 2 + .../confluence/6.4.0/.docker-repository.yml | 1 + atlassian/confluence/6.4.0/.dockerignore | 3 + atlassian/confluence/6.4.0/Dockerfile | 46 ++++++ atlassian/confluence/6.4.0/Makefile | 5 + atlassian/confluence/6.4.0/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.4.0/entrypoint.sh | 39 ++++++ .../confluence/6.4.1/.docker-repository.yml | 1 + atlassian/confluence/6.4.1/.dockerignore | 3 + atlassian/confluence/6.4.1/Dockerfile | 46 ++++++ atlassian/confluence/6.4.1/Makefile | 5 + atlassian/confluence/6.4.1/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.4.1/entrypoint.sh | 39 ++++++ .../confluence/6.4.2/.docker-repository.yml | 1 + atlassian/confluence/6.4.2/.dockerignore | 3 + atlassian/confluence/6.4.2/Dockerfile | 46 ++++++ atlassian/confluence/6.4.2/Makefile | 5 + atlassian/confluence/6.4.2/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.4.2/entrypoint.sh | 39 ++++++ .../confluence/6.4.3/.docker-repository.yml | 1 + atlassian/confluence/6.4.3/.dockerignore | 3 + atlassian/confluence/6.4.3/Dockerfile | 46 ++++++ atlassian/confluence/6.4.3/Makefile | 5 + atlassian/confluence/6.4.3/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.4.3/entrypoint.sh | 39 ++++++ .../confluence/6.5.0/.docker-repository.yml | 1 + atlassian/confluence/6.5.0/.dockerignore | 3 + atlassian/confluence/6.5.0/Dockerfile | 46 ++++++ atlassian/confluence/6.5.0/Makefile | 5 + atlassian/confluence/6.5.0/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.5.0/entrypoint.sh | 39 ++++++ .../confluence/6.5.1/.docker-repository.yml | 1 + atlassian/confluence/6.5.1/.dockerignore | 3 + atlassian/confluence/6.5.1/Dockerfile | 46 ++++++ atlassian/confluence/6.5.1/Makefile | 5 + atlassian/confluence/6.5.1/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.5.1/entrypoint.sh | 39 ++++++ .../confluence/6.5.2/.docker-repository.yml | 1 + atlassian/confluence/6.5.2/.dockerignore | 3 + atlassian/confluence/6.5.2/Dockerfile | 46 ++++++ atlassian/confluence/6.5.2/Makefile | 5 + atlassian/confluence/6.5.2/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.5.2/entrypoint.sh | 39 ++++++ .../confluence/6.5.3/.docker-repository.yml | 1 + atlassian/confluence/6.5.3/.dockerignore | 3 + atlassian/confluence/6.5.3/Dockerfile | 46 ++++++ atlassian/confluence/6.5.3/Makefile | 5 + atlassian/confluence/6.5.3/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.5.3/entrypoint.sh | 39 ++++++ 50 files changed, 1838 insertions(+) create mode 100644 atlassian/confluence/6.4.0/.docker-repository.yml create mode 100644 atlassian/confluence/6.4.0/.dockerignore create mode 100644 atlassian/confluence/6.4.0/Dockerfile create mode 100644 atlassian/confluence/6.4.0/Makefile create mode 100644 atlassian/confluence/6.4.0/README.md create mode 100644 atlassian/confluence/6.4.0/entrypoint.sh create mode 100644 atlassian/confluence/6.4.1/.docker-repository.yml create mode 100644 atlassian/confluence/6.4.1/.dockerignore create mode 100644 atlassian/confluence/6.4.1/Dockerfile create mode 100644 atlassian/confluence/6.4.1/Makefile create mode 100644 atlassian/confluence/6.4.1/README.md create mode 100644 atlassian/confluence/6.4.1/entrypoint.sh create mode 100644 atlassian/confluence/6.4.2/.docker-repository.yml create mode 100644 atlassian/confluence/6.4.2/.dockerignore create mode 100644 atlassian/confluence/6.4.2/Dockerfile create mode 100644 atlassian/confluence/6.4.2/Makefile create mode 100644 atlassian/confluence/6.4.2/README.md create mode 100644 atlassian/confluence/6.4.2/entrypoint.sh create mode 100644 atlassian/confluence/6.4.3/.docker-repository.yml create mode 100644 atlassian/confluence/6.4.3/.dockerignore create mode 100644 atlassian/confluence/6.4.3/Dockerfile create mode 100644 atlassian/confluence/6.4.3/Makefile create mode 100644 atlassian/confluence/6.4.3/README.md create mode 100644 atlassian/confluence/6.4.3/entrypoint.sh create mode 100644 atlassian/confluence/6.5.0/.docker-repository.yml create mode 100644 atlassian/confluence/6.5.0/.dockerignore create mode 100644 atlassian/confluence/6.5.0/Dockerfile create mode 100644 atlassian/confluence/6.5.0/Makefile create mode 100644 atlassian/confluence/6.5.0/README.md create mode 100644 atlassian/confluence/6.5.0/entrypoint.sh create mode 100644 atlassian/confluence/6.5.1/.docker-repository.yml create mode 100644 atlassian/confluence/6.5.1/.dockerignore create mode 100644 atlassian/confluence/6.5.1/Dockerfile create mode 100644 atlassian/confluence/6.5.1/Makefile create mode 100644 atlassian/confluence/6.5.1/README.md create mode 100644 atlassian/confluence/6.5.1/entrypoint.sh create mode 100644 atlassian/confluence/6.5.2/.docker-repository.yml create mode 100644 atlassian/confluence/6.5.2/.dockerignore create mode 100644 atlassian/confluence/6.5.2/Dockerfile create mode 100644 atlassian/confluence/6.5.2/Makefile create mode 100644 atlassian/confluence/6.5.2/README.md create mode 100644 atlassian/confluence/6.5.2/entrypoint.sh create mode 100644 atlassian/confluence/6.5.3/.docker-repository.yml create mode 100644 atlassian/confluence/6.5.3/.dockerignore create mode 100644 atlassian/confluence/6.5.3/Dockerfile create mode 100644 atlassian/confluence/6.5.3/Makefile create mode 100644 atlassian/confluence/6.5.3/README.md create mode 100644 atlassian/confluence/6.5.3/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index 35e4739ab..421e609eb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -612,6 +612,42 @@ matrix: - docker build --compress -t epicmorg/confluence:6.3.4 atlassian/confluence/6.3.4 - docker push epicmorg/confluence:6.3.4 +########## + + - name: Confluence 6.4.x + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + + - docker build --compress -t epicmorg/confluence:6.4.0 atlassian/confluence/6.4.0 + - docker push epicmorg/confluence:6.4.0 + + - docker build --compress -t epicmorg/confluence:6.4.1 atlassian/confluence/6.4.1 + - docker push epicmorg/confluence:6.4.1 + + - docker build --compress -t epicmorg/confluence:6.4.2 atlassian/confluence/6.4.2 + - docker push epicmorg/confluence:6.4.2 + + - docker build --compress -t epicmorg/confluence:6.4.3 atlassian/confluence/6.4.3 + - docker push epicmorg/confluence:6.4.3 + +########## + + - name: Confluence 6.5.x + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + + - docker build --compress -t epicmorg/confluence:6.5.0 atlassian/confluence/6.5.0 + - docker push epicmorg/confluence:6.5.0 + + - docker build --compress -t epicmorg/confluence:6.5.1 atlassian/confluence/6.5.1 + - docker push epicmorg/confluence:6.5.1 + + - docker build --compress -t epicmorg/confluence:6.5.2 atlassian/confluence/6.5.2 + - docker push epicmorg/confluence:6.5.2 + + - docker build --compress -t epicmorg/confluence:6.5.3 atlassian/confluence/6.5.3 + - docker push epicmorg/confluence:6.5.3 + ########## - name: Confluence 6.9.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index b00fbdbcb..d1f2163f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,8 @@ * added `Confluence 6.1.x`: `6.1.0`, `6.1.1`, `6.1.2`, `6.1.3`, `6.1.4` * added `Confluence 6.2.x`: `6.2.0`, `6.2.1`, `6.2.3`, `6.2.4` * added `Confluence 6.3.x`: `6.3.1`, `6.3.2`, `6.3.3`, `6.3.4` + * added `Confluence 6.4.x`: `6.4.0`, `6.4.1`, `6.4.2`, `6.4.3` + * added `Confluence 6.5.x`: `6.5.0`, `6.5.1`, `6.5.2`, `6.5.3` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/confluence/6.4.0/.docker-repository.yml b/atlassian/confluence/6.4.0/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.4.0/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.4.0/.dockerignore b/atlassian/confluence/6.4.0/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.4.0/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.4.0/Dockerfile b/atlassian/confluence/6.4.0/Dockerfile new file mode 100644 index 000000000..e54266583 --- /dev/null +++ b/atlassian/confluence/6.4.0/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.4.0 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.4.0/Makefile b/atlassian/confluence/6.4.0/Makefile new file mode 100644 index 000000000..dd3a24008 --- /dev/null +++ b/atlassian/confluence/6.4.0/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.4.0 . + diff --git a/atlassian/confluence/6.4.0/README.md b/atlassian/confluence/6.4.0/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.4.0/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.4.0/entrypoint.sh b/atlassian/confluence/6.4.0/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.4.0/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.4.1/.docker-repository.yml b/atlassian/confluence/6.4.1/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.4.1/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.4.1/.dockerignore b/atlassian/confluence/6.4.1/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.4.1/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.4.1/Dockerfile b/atlassian/confluence/6.4.1/Dockerfile new file mode 100644 index 000000000..62c64bbde --- /dev/null +++ b/atlassian/confluence/6.4.1/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.4.1 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.4.1/Makefile b/atlassian/confluence/6.4.1/Makefile new file mode 100644 index 000000000..7379fec29 --- /dev/null +++ b/atlassian/confluence/6.4.1/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.4.1 . + diff --git a/atlassian/confluence/6.4.1/README.md b/atlassian/confluence/6.4.1/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.4.1/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.4.1/entrypoint.sh b/atlassian/confluence/6.4.1/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.4.1/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.4.2/.docker-repository.yml b/atlassian/confluence/6.4.2/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.4.2/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.4.2/.dockerignore b/atlassian/confluence/6.4.2/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.4.2/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.4.2/Dockerfile b/atlassian/confluence/6.4.2/Dockerfile new file mode 100644 index 000000000..d092f4d19 --- /dev/null +++ b/atlassian/confluence/6.4.2/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.4.2 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.4.2/Makefile b/atlassian/confluence/6.4.2/Makefile new file mode 100644 index 000000000..34484b6ce --- /dev/null +++ b/atlassian/confluence/6.4.2/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.4.2 . + diff --git a/atlassian/confluence/6.4.2/README.md b/atlassian/confluence/6.4.2/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.4.2/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.4.2/entrypoint.sh b/atlassian/confluence/6.4.2/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.4.2/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.4.3/.docker-repository.yml b/atlassian/confluence/6.4.3/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.4.3/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.4.3/.dockerignore b/atlassian/confluence/6.4.3/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.4.3/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.4.3/Dockerfile b/atlassian/confluence/6.4.3/Dockerfile new file mode 100644 index 000000000..6281998aa --- /dev/null +++ b/atlassian/confluence/6.4.3/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.4.3 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.4.3/Makefile b/atlassian/confluence/6.4.3/Makefile new file mode 100644 index 000000000..888a64d97 --- /dev/null +++ b/atlassian/confluence/6.4.3/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.4.3 . + diff --git a/atlassian/confluence/6.4.3/README.md b/atlassian/confluence/6.4.3/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.4.3/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.4.3/entrypoint.sh b/atlassian/confluence/6.4.3/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.4.3/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.5.0/.docker-repository.yml b/atlassian/confluence/6.5.0/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.5.0/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.5.0/.dockerignore b/atlassian/confluence/6.5.0/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.5.0/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.5.0/Dockerfile b/atlassian/confluence/6.5.0/Dockerfile new file mode 100644 index 000000000..e674e1e53 --- /dev/null +++ b/atlassian/confluence/6.5.0/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.5.0 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.5.0/Makefile b/atlassian/confluence/6.5.0/Makefile new file mode 100644 index 000000000..a457b27b6 --- /dev/null +++ b/atlassian/confluence/6.5.0/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.5.0 . + diff --git a/atlassian/confluence/6.5.0/README.md b/atlassian/confluence/6.5.0/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.5.0/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.5.0/entrypoint.sh b/atlassian/confluence/6.5.0/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.5.0/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.5.1/.docker-repository.yml b/atlassian/confluence/6.5.1/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.5.1/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.5.1/.dockerignore b/atlassian/confluence/6.5.1/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.5.1/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.5.1/Dockerfile b/atlassian/confluence/6.5.1/Dockerfile new file mode 100644 index 000000000..fb30c69be --- /dev/null +++ b/atlassian/confluence/6.5.1/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.5.1 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.5.1/Makefile b/atlassian/confluence/6.5.1/Makefile new file mode 100644 index 000000000..10590eca2 --- /dev/null +++ b/atlassian/confluence/6.5.1/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.5.1 . + diff --git a/atlassian/confluence/6.5.1/README.md b/atlassian/confluence/6.5.1/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.5.1/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.5.1/entrypoint.sh b/atlassian/confluence/6.5.1/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.5.1/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.5.2/.docker-repository.yml b/atlassian/confluence/6.5.2/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.5.2/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.5.2/.dockerignore b/atlassian/confluence/6.5.2/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.5.2/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.5.2/Dockerfile b/atlassian/confluence/6.5.2/Dockerfile new file mode 100644 index 000000000..6a5f7cc0f --- /dev/null +++ b/atlassian/confluence/6.5.2/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.5.2 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.5.2/Makefile b/atlassian/confluence/6.5.2/Makefile new file mode 100644 index 000000000..d9dde7a8f --- /dev/null +++ b/atlassian/confluence/6.5.2/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.5.2 . + diff --git a/atlassian/confluence/6.5.2/README.md b/atlassian/confluence/6.5.2/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.5.2/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.5.2/entrypoint.sh b/atlassian/confluence/6.5.2/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.5.2/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.5.3/.docker-repository.yml b/atlassian/confluence/6.5.3/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.5.3/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.5.3/.dockerignore b/atlassian/confluence/6.5.3/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.5.3/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.5.3/Dockerfile b/atlassian/confluence/6.5.3/Dockerfile new file mode 100644 index 000000000..f81e707cb --- /dev/null +++ b/atlassian/confluence/6.5.3/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.5.3 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.5.3/Makefile b/atlassian/confluence/6.5.3/Makefile new file mode 100644 index 000000000..1e1b17a1a --- /dev/null +++ b/atlassian/confluence/6.5.3/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.5.3 . + diff --git a/atlassian/confluence/6.5.3/README.md b/atlassian/confluence/6.5.3/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.5.3/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.5.3/entrypoint.sh b/atlassian/confluence/6.5.3/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.5.3/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi From 952cae3e23e93df96a60928e21b394fa148379d3 Mon Sep 17 00:00:00 2001 From: stam Date: Thu, 16 Jan 2020 15:13:30 +0300 Subject: [PATCH 31/50] Confluence 6.6 --- .travis.yml | 57 ++++++++ CHANGELOG.md | 1 + .../confluence/6.6.0/.docker-repository.yml | 1 + atlassian/confluence/6.6.0/.dockerignore | 3 + atlassian/confluence/6.6.0/Dockerfile | 46 ++++++ atlassian/confluence/6.6.0/Makefile | 5 + atlassian/confluence/6.6.0/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.6.0/entrypoint.sh | 39 ++++++ .../confluence/6.6.1/.docker-repository.yml | 1 + atlassian/confluence/6.6.1/.dockerignore | 3 + atlassian/confluence/6.6.1/Dockerfile | 46 ++++++ atlassian/confluence/6.6.1/Makefile | 5 + atlassian/confluence/6.6.1/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.6.1/entrypoint.sh | 39 ++++++ .../confluence/6.6.10/.docker-repository.yml | 1 + atlassian/confluence/6.6.10/.dockerignore | 3 + atlassian/confluence/6.6.10/Dockerfile | 46 ++++++ atlassian/confluence/6.6.10/Makefile | 5 + atlassian/confluence/6.6.10/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.6.10/entrypoint.sh | 39 ++++++ .../confluence/6.6.11/.docker-repository.yml | 1 + atlassian/confluence/6.6.11/.dockerignore | 3 + atlassian/confluence/6.6.11/Dockerfile | 46 ++++++ atlassian/confluence/6.6.11/Makefile | 5 + atlassian/confluence/6.6.11/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.6.11/entrypoint.sh | 39 ++++++ .../confluence/6.6.12/.docker-repository.yml | 1 + atlassian/confluence/6.6.12/.dockerignore | 3 + atlassian/confluence/6.6.12/Dockerfile | 46 ++++++ atlassian/confluence/6.6.12/Makefile | 5 + atlassian/confluence/6.6.12/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.6.12/entrypoint.sh | 39 ++++++ .../confluence/6.6.13/.docker-repository.yml | 1 + atlassian/confluence/6.6.13/.dockerignore | 3 + atlassian/confluence/6.6.13/Dockerfile | 46 ++++++ atlassian/confluence/6.6.13/Makefile | 5 + atlassian/confluence/6.6.13/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.6.13/entrypoint.sh | 39 ++++++ .../confluence/6.6.14/.docker-repository.yml | 1 + atlassian/confluence/6.6.14/.dockerignore | 3 + atlassian/confluence/6.6.14/Dockerfile | 46 ++++++ atlassian/confluence/6.6.14/Makefile | 5 + atlassian/confluence/6.6.14/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.6.14/entrypoint.sh | 39 ++++++ .../confluence/6.6.15/.docker-repository.yml | 1 + atlassian/confluence/6.6.15/.dockerignore | 3 + atlassian/confluence/6.6.15/Dockerfile | 46 ++++++ atlassian/confluence/6.6.15/Makefile | 5 + atlassian/confluence/6.6.15/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.6.15/entrypoint.sh | 39 ++++++ .../confluence/6.6.17/.docker-repository.yml | 1 + atlassian/confluence/6.6.17/.dockerignore | 3 + atlassian/confluence/6.6.17/Dockerfile | 46 ++++++ atlassian/confluence/6.6.17/Makefile | 5 + atlassian/confluence/6.6.17/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.6.17/entrypoint.sh | 39 ++++++ .../confluence/6.6.2/.docker-repository.yml | 1 + atlassian/confluence/6.6.2/.dockerignore | 3 + atlassian/confluence/6.6.2/Dockerfile | 46 ++++++ atlassian/confluence/6.6.2/Makefile | 5 + atlassian/confluence/6.6.2/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.6.2/entrypoint.sh | 39 ++++++ .../confluence/6.6.3/.docker-repository.yml | 1 + atlassian/confluence/6.6.3/.dockerignore | 3 + atlassian/confluence/6.6.3/Dockerfile | 46 ++++++ atlassian/confluence/6.6.3/Makefile | 5 + atlassian/confluence/6.6.3/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.6.3/entrypoint.sh | 39 ++++++ .../confluence/6.6.4/.docker-repository.yml | 1 + atlassian/confluence/6.6.4/.dockerignore | 3 + atlassian/confluence/6.6.4/Dockerfile | 46 ++++++ atlassian/confluence/6.6.4/Makefile | 5 + atlassian/confluence/6.6.4/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.6.4/entrypoint.sh | 39 ++++++ .../confluence/6.6.5/.docker-repository.yml | 1 + atlassian/confluence/6.6.5/.dockerignore | 3 + atlassian/confluence/6.6.5/Dockerfile | 46 ++++++ atlassian/confluence/6.6.5/Makefile | 5 + atlassian/confluence/6.6.5/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.6.5/entrypoint.sh | 39 ++++++ .../confluence/6.6.6/.docker-repository.yml | 1 + atlassian/confluence/6.6.6/.dockerignore | 3 + atlassian/confluence/6.6.6/Dockerfile | 46 ++++++ atlassian/confluence/6.6.6/Makefile | 5 + atlassian/confluence/6.6.6/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.6.6/entrypoint.sh | 39 ++++++ .../confluence/6.6.7/.docker-repository.yml | 1 + atlassian/confluence/6.6.7/.dockerignore | 3 + atlassian/confluence/6.6.7/Dockerfile | 46 ++++++ atlassian/confluence/6.6.7/Makefile | 5 + atlassian/confluence/6.6.7/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.6.7/entrypoint.sh | 39 ++++++ .../confluence/6.6.8/.docker-repository.yml | 1 + atlassian/confluence/6.6.8/.dockerignore | 3 + atlassian/confluence/6.6.8/Dockerfile | 46 ++++++ atlassian/confluence/6.6.8/Makefile | 5 + atlassian/confluence/6.6.8/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.6.8/entrypoint.sh | 39 ++++++ .../confluence/6.6.9/.docker-repository.yml | 1 + atlassian/confluence/6.6.9/.dockerignore | 3 + atlassian/confluence/6.6.9/Dockerfile | 46 ++++++ atlassian/confluence/6.6.9/Makefile | 5 + atlassian/confluence/6.6.9/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.6.9/entrypoint.sh | 39 ++++++ 104 files changed, 3883 insertions(+) create mode 100644 atlassian/confluence/6.6.0/.docker-repository.yml create mode 100644 atlassian/confluence/6.6.0/.dockerignore create mode 100644 atlassian/confluence/6.6.0/Dockerfile create mode 100644 atlassian/confluence/6.6.0/Makefile create mode 100644 atlassian/confluence/6.6.0/README.md create mode 100644 atlassian/confluence/6.6.0/entrypoint.sh create mode 100644 atlassian/confluence/6.6.1/.docker-repository.yml create mode 100644 atlassian/confluence/6.6.1/.dockerignore create mode 100644 atlassian/confluence/6.6.1/Dockerfile create mode 100644 atlassian/confluence/6.6.1/Makefile create mode 100644 atlassian/confluence/6.6.1/README.md create mode 100644 atlassian/confluence/6.6.1/entrypoint.sh create mode 100644 atlassian/confluence/6.6.10/.docker-repository.yml create mode 100644 atlassian/confluence/6.6.10/.dockerignore create mode 100644 atlassian/confluence/6.6.10/Dockerfile create mode 100644 atlassian/confluence/6.6.10/Makefile create mode 100644 atlassian/confluence/6.6.10/README.md create mode 100644 atlassian/confluence/6.6.10/entrypoint.sh create mode 100644 atlassian/confluence/6.6.11/.docker-repository.yml create mode 100644 atlassian/confluence/6.6.11/.dockerignore create mode 100644 atlassian/confluence/6.6.11/Dockerfile create mode 100644 atlassian/confluence/6.6.11/Makefile create mode 100644 atlassian/confluence/6.6.11/README.md create mode 100644 atlassian/confluence/6.6.11/entrypoint.sh create mode 100644 atlassian/confluence/6.6.12/.docker-repository.yml create mode 100644 atlassian/confluence/6.6.12/.dockerignore create mode 100644 atlassian/confluence/6.6.12/Dockerfile create mode 100644 atlassian/confluence/6.6.12/Makefile create mode 100644 atlassian/confluence/6.6.12/README.md create mode 100644 atlassian/confluence/6.6.12/entrypoint.sh create mode 100644 atlassian/confluence/6.6.13/.docker-repository.yml create mode 100644 atlassian/confluence/6.6.13/.dockerignore create mode 100644 atlassian/confluence/6.6.13/Dockerfile create mode 100644 atlassian/confluence/6.6.13/Makefile create mode 100644 atlassian/confluence/6.6.13/README.md create mode 100644 atlassian/confluence/6.6.13/entrypoint.sh create mode 100644 atlassian/confluence/6.6.14/.docker-repository.yml create mode 100644 atlassian/confluence/6.6.14/.dockerignore create mode 100644 atlassian/confluence/6.6.14/Dockerfile create mode 100644 atlassian/confluence/6.6.14/Makefile create mode 100644 atlassian/confluence/6.6.14/README.md create mode 100644 atlassian/confluence/6.6.14/entrypoint.sh create mode 100644 atlassian/confluence/6.6.15/.docker-repository.yml create mode 100644 atlassian/confluence/6.6.15/.dockerignore create mode 100644 atlassian/confluence/6.6.15/Dockerfile create mode 100644 atlassian/confluence/6.6.15/Makefile create mode 100644 atlassian/confluence/6.6.15/README.md create mode 100644 atlassian/confluence/6.6.15/entrypoint.sh create mode 100644 atlassian/confluence/6.6.17/.docker-repository.yml create mode 100644 atlassian/confluence/6.6.17/.dockerignore create mode 100644 atlassian/confluence/6.6.17/Dockerfile create mode 100644 atlassian/confluence/6.6.17/Makefile create mode 100644 atlassian/confluence/6.6.17/README.md create mode 100644 atlassian/confluence/6.6.17/entrypoint.sh create mode 100644 atlassian/confluence/6.6.2/.docker-repository.yml create mode 100644 atlassian/confluence/6.6.2/.dockerignore create mode 100644 atlassian/confluence/6.6.2/Dockerfile create mode 100644 atlassian/confluence/6.6.2/Makefile create mode 100644 atlassian/confluence/6.6.2/README.md create mode 100644 atlassian/confluence/6.6.2/entrypoint.sh create mode 100644 atlassian/confluence/6.6.3/.docker-repository.yml create mode 100644 atlassian/confluence/6.6.3/.dockerignore create mode 100644 atlassian/confluence/6.6.3/Dockerfile create mode 100644 atlassian/confluence/6.6.3/Makefile create mode 100644 atlassian/confluence/6.6.3/README.md create mode 100644 atlassian/confluence/6.6.3/entrypoint.sh create mode 100644 atlassian/confluence/6.6.4/.docker-repository.yml create mode 100644 atlassian/confluence/6.6.4/.dockerignore create mode 100644 atlassian/confluence/6.6.4/Dockerfile create mode 100644 atlassian/confluence/6.6.4/Makefile create mode 100644 atlassian/confluence/6.6.4/README.md create mode 100644 atlassian/confluence/6.6.4/entrypoint.sh create mode 100644 atlassian/confluence/6.6.5/.docker-repository.yml create mode 100644 atlassian/confluence/6.6.5/.dockerignore create mode 100644 atlassian/confluence/6.6.5/Dockerfile create mode 100644 atlassian/confluence/6.6.5/Makefile create mode 100644 atlassian/confluence/6.6.5/README.md create mode 100644 atlassian/confluence/6.6.5/entrypoint.sh create mode 100644 atlassian/confluence/6.6.6/.docker-repository.yml create mode 100644 atlassian/confluence/6.6.6/.dockerignore create mode 100644 atlassian/confluence/6.6.6/Dockerfile create mode 100644 atlassian/confluence/6.6.6/Makefile create mode 100644 atlassian/confluence/6.6.6/README.md create mode 100644 atlassian/confluence/6.6.6/entrypoint.sh create mode 100644 atlassian/confluence/6.6.7/.docker-repository.yml create mode 100644 atlassian/confluence/6.6.7/.dockerignore create mode 100644 atlassian/confluence/6.6.7/Dockerfile create mode 100644 atlassian/confluence/6.6.7/Makefile create mode 100644 atlassian/confluence/6.6.7/README.md create mode 100644 atlassian/confluence/6.6.7/entrypoint.sh create mode 100644 atlassian/confluence/6.6.8/.docker-repository.yml create mode 100644 atlassian/confluence/6.6.8/.dockerignore create mode 100644 atlassian/confluence/6.6.8/Dockerfile create mode 100644 atlassian/confluence/6.6.8/Makefile create mode 100644 atlassian/confluence/6.6.8/README.md create mode 100644 atlassian/confluence/6.6.8/entrypoint.sh create mode 100644 atlassian/confluence/6.6.9/.docker-repository.yml create mode 100644 atlassian/confluence/6.6.9/.dockerignore create mode 100644 atlassian/confluence/6.6.9/Dockerfile create mode 100644 atlassian/confluence/6.6.9/Makefile create mode 100644 atlassian/confluence/6.6.9/README.md create mode 100644 atlassian/confluence/6.6.9/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index 421e609eb..0b80c1da2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -647,6 +647,63 @@ matrix: - docker build --compress -t epicmorg/confluence:6.5.3 atlassian/confluence/6.5.3 - docker push epicmorg/confluence:6.5.3 + +########## + + - name: Confluence 6.6.x LTS + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + + - docker build --compress -t epicmorg/confluence:6.6.0 atlassian/confluence/6.6.0 + - docker push epicmorg/confluence:6.6.0 + + - docker build --compress -t epicmorg/confluence:6.6.1 atlassian/confluence/6.6.1 + - docker push epicmorg/confluence:6.6.1 + + - docker build --compress -t epicmorg/confluence:6.6.2 atlassian/confluence/6.6.2 + - docker push epicmorg/confluence:6.6.2 + + - docker build --compress -t epicmorg/confluence:6.6.3 atlassian/confluence/6.6.3 + - docker push epicmorg/confluence:6.6.3 + + - docker build --compress -t epicmorg/confluence:6.6.4 atlassian/confluence/6.6.4 + - docker push epicmorg/confluence:6.6.4 + + - docker build --compress -t epicmorg/confluence:6.6.5 atlassian/confluence/6.6.5 + - docker push epicmorg/confluence:6.6.5 + + - docker build --compress -t epicmorg/confluence:6.6.6 atlassian/confluence/6.6.6 + - docker push epicmorg/confluence:6.6.6 + + - docker build --compress -t epicmorg/confluence:6.6.7 atlassian/confluence/6.6.7 + - docker push epicmorg/confluence:6.6.7 + + - docker build --compress -t epicmorg/confluence:6.6.8 atlassian/confluence/6.6.8 + - docker push epicmorg/confluence:6.6.8 + + - docker build --compress -t epicmorg/confluence:6.6.9 atlassian/confluence/6.6.9 + - docker push epicmorg/confluence:6.6.9 + + - docker build --compress -t epicmorg/confluence:6.6.10 atlassian/confluence/6.6.10 + - docker push epicmorg/confluence:6.6.10 + + - docker build --compress -t epicmorg/confluence:6.6.11 atlassian/confluence/6.6.11 + - docker push epicmorg/confluence:6.6.11 + + - docker build --compress -t epicmorg/confluence:6.6.12 atlassian/confluence/6.6.12 + - docker push epicmorg/confluence:6.6.12 + + - docker build --compress -t epicmorg/confluence:6.6.13 atlassian/confluence/6.6.13 + - docker push epicmorg/confluence:6.6.13 + + - docker build --compress -t epicmorg/confluence:6.6.14 atlassian/confluence/6.6.14 + - docker push epicmorg/confluence:6.6.14 + + - docker build --compress -t epicmorg/confluence:6.6.15 atlassian/confluence/6.6.15 + - docker push epicmorg/confluence:6.6.15 + + - docker build --compress -t epicmorg/confluence:6.6.17 atlassian/confluence/6.6.17 + - docker push epicmorg/confluence:6.6.17 ########## diff --git a/CHANGELOG.md b/CHANGELOG.md index d1f2163f7..31c4de6b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,7 @@ * added `Confluence 6.3.x`: `6.3.1`, `6.3.2`, `6.3.3`, `6.3.4` * added `Confluence 6.4.x`: `6.4.0`, `6.4.1`, `6.4.2`, `6.4.3` * added `Confluence 6.5.x`: `6.5.0`, `6.5.1`, `6.5.2`, `6.5.3` + * added `Confluence 6.6.x`: `6.6.0`, `6.6.1`, `6.6.2`, `6.6.3`, `6.6.4`, `6.6.5`, `6.6.6`, `6.6.7`, `6.6.8`, `6.6.9`, `6.6.10`, `6.6.11`, `6.6.12`, `6.6.13`, `6.6.14`, `6.6.15`, `6.6.17` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/confluence/6.6.0/.docker-repository.yml b/atlassian/confluence/6.6.0/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.6.0/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.6.0/.dockerignore b/atlassian/confluence/6.6.0/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.6.0/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.6.0/Dockerfile b/atlassian/confluence/6.6.0/Dockerfile new file mode 100644 index 000000000..b0850304f --- /dev/null +++ b/atlassian/confluence/6.6.0/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.6.0 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.6.0/Makefile b/atlassian/confluence/6.6.0/Makefile new file mode 100644 index 000000000..1876076f1 --- /dev/null +++ b/atlassian/confluence/6.6.0/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.6.0 . + diff --git a/atlassian/confluence/6.6.0/README.md b/atlassian/confluence/6.6.0/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.6.0/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.6.0/entrypoint.sh b/atlassian/confluence/6.6.0/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.6.0/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.6.1/.docker-repository.yml b/atlassian/confluence/6.6.1/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.6.1/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.6.1/.dockerignore b/atlassian/confluence/6.6.1/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.6.1/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.6.1/Dockerfile b/atlassian/confluence/6.6.1/Dockerfile new file mode 100644 index 000000000..1608677f8 --- /dev/null +++ b/atlassian/confluence/6.6.1/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.6.1 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.6.1/Makefile b/atlassian/confluence/6.6.1/Makefile new file mode 100644 index 000000000..9127a3ae2 --- /dev/null +++ b/atlassian/confluence/6.6.1/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.6.1 . + diff --git a/atlassian/confluence/6.6.1/README.md b/atlassian/confluence/6.6.1/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.6.1/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.6.1/entrypoint.sh b/atlassian/confluence/6.6.1/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.6.1/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.6.10/.docker-repository.yml b/atlassian/confluence/6.6.10/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.6.10/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.6.10/.dockerignore b/atlassian/confluence/6.6.10/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.6.10/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.6.10/Dockerfile b/atlassian/confluence/6.6.10/Dockerfile new file mode 100644 index 000000000..eb33e2439 --- /dev/null +++ b/atlassian/confluence/6.6.10/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.6.10 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.6.10/Makefile b/atlassian/confluence/6.6.10/Makefile new file mode 100644 index 000000000..e322ce139 --- /dev/null +++ b/atlassian/confluence/6.6.10/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.6.10 . + diff --git a/atlassian/confluence/6.6.10/README.md b/atlassian/confluence/6.6.10/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.6.10/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.6.10/entrypoint.sh b/atlassian/confluence/6.6.10/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.6.10/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.6.11/.docker-repository.yml b/atlassian/confluence/6.6.11/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.6.11/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.6.11/.dockerignore b/atlassian/confluence/6.6.11/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.6.11/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.6.11/Dockerfile b/atlassian/confluence/6.6.11/Dockerfile new file mode 100644 index 000000000..65d9e9233 --- /dev/null +++ b/atlassian/confluence/6.6.11/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.6.11 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.6.11/Makefile b/atlassian/confluence/6.6.11/Makefile new file mode 100644 index 000000000..42ff0164d --- /dev/null +++ b/atlassian/confluence/6.6.11/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.6.11 . + diff --git a/atlassian/confluence/6.6.11/README.md b/atlassian/confluence/6.6.11/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.6.11/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.6.11/entrypoint.sh b/atlassian/confluence/6.6.11/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.6.11/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.6.12/.docker-repository.yml b/atlassian/confluence/6.6.12/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.6.12/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.6.12/.dockerignore b/atlassian/confluence/6.6.12/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.6.12/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.6.12/Dockerfile b/atlassian/confluence/6.6.12/Dockerfile new file mode 100644 index 000000000..17da76ab4 --- /dev/null +++ b/atlassian/confluence/6.6.12/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.6.12 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.6.12/Makefile b/atlassian/confluence/6.6.12/Makefile new file mode 100644 index 000000000..29ec4ae8d --- /dev/null +++ b/atlassian/confluence/6.6.12/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.6.12 . + diff --git a/atlassian/confluence/6.6.12/README.md b/atlassian/confluence/6.6.12/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.6.12/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.6.12/entrypoint.sh b/atlassian/confluence/6.6.12/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.6.12/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.6.13/.docker-repository.yml b/atlassian/confluence/6.6.13/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.6.13/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.6.13/.dockerignore b/atlassian/confluence/6.6.13/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.6.13/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.6.13/Dockerfile b/atlassian/confluence/6.6.13/Dockerfile new file mode 100644 index 000000000..cd6f7d0e5 --- /dev/null +++ b/atlassian/confluence/6.6.13/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.6.13 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.6.13/Makefile b/atlassian/confluence/6.6.13/Makefile new file mode 100644 index 000000000..4a5e342e0 --- /dev/null +++ b/atlassian/confluence/6.6.13/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.6.13 . + diff --git a/atlassian/confluence/6.6.13/README.md b/atlassian/confluence/6.6.13/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.6.13/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.6.13/entrypoint.sh b/atlassian/confluence/6.6.13/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.6.13/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.6.14/.docker-repository.yml b/atlassian/confluence/6.6.14/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.6.14/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.6.14/.dockerignore b/atlassian/confluence/6.6.14/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.6.14/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.6.14/Dockerfile b/atlassian/confluence/6.6.14/Dockerfile new file mode 100644 index 000000000..88534111b --- /dev/null +++ b/atlassian/confluence/6.6.14/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.6.14 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.6.14/Makefile b/atlassian/confluence/6.6.14/Makefile new file mode 100644 index 000000000..c07283d88 --- /dev/null +++ b/atlassian/confluence/6.6.14/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.6.14 . + diff --git a/atlassian/confluence/6.6.14/README.md b/atlassian/confluence/6.6.14/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.6.14/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.6.14/entrypoint.sh b/atlassian/confluence/6.6.14/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.6.14/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.6.15/.docker-repository.yml b/atlassian/confluence/6.6.15/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.6.15/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.6.15/.dockerignore b/atlassian/confluence/6.6.15/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.6.15/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.6.15/Dockerfile b/atlassian/confluence/6.6.15/Dockerfile new file mode 100644 index 000000000..65fd33268 --- /dev/null +++ b/atlassian/confluence/6.6.15/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.6.15 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.6.15/Makefile b/atlassian/confluence/6.6.15/Makefile new file mode 100644 index 000000000..c16e574e6 --- /dev/null +++ b/atlassian/confluence/6.6.15/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.6.15 . + diff --git a/atlassian/confluence/6.6.15/README.md b/atlassian/confluence/6.6.15/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.6.15/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.6.15/entrypoint.sh b/atlassian/confluence/6.6.15/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.6.15/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.6.17/.docker-repository.yml b/atlassian/confluence/6.6.17/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.6.17/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.6.17/.dockerignore b/atlassian/confluence/6.6.17/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.6.17/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.6.17/Dockerfile b/atlassian/confluence/6.6.17/Dockerfile new file mode 100644 index 000000000..554b5841a --- /dev/null +++ b/atlassian/confluence/6.6.17/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.6.17 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.6.17/Makefile b/atlassian/confluence/6.6.17/Makefile new file mode 100644 index 000000000..356dd5709 --- /dev/null +++ b/atlassian/confluence/6.6.17/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.6.17 . + diff --git a/atlassian/confluence/6.6.17/README.md b/atlassian/confluence/6.6.17/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.6.17/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.6.17/entrypoint.sh b/atlassian/confluence/6.6.17/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.6.17/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.6.2/.docker-repository.yml b/atlassian/confluence/6.6.2/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.6.2/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.6.2/.dockerignore b/atlassian/confluence/6.6.2/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.6.2/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.6.2/Dockerfile b/atlassian/confluence/6.6.2/Dockerfile new file mode 100644 index 000000000..e0bc6ea1b --- /dev/null +++ b/atlassian/confluence/6.6.2/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.6.2 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.6.2/Makefile b/atlassian/confluence/6.6.2/Makefile new file mode 100644 index 000000000..d66002167 --- /dev/null +++ b/atlassian/confluence/6.6.2/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.6.2 . + diff --git a/atlassian/confluence/6.6.2/README.md b/atlassian/confluence/6.6.2/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.6.2/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.6.2/entrypoint.sh b/atlassian/confluence/6.6.2/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.6.2/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.6.3/.docker-repository.yml b/atlassian/confluence/6.6.3/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.6.3/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.6.3/.dockerignore b/atlassian/confluence/6.6.3/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.6.3/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.6.3/Dockerfile b/atlassian/confluence/6.6.3/Dockerfile new file mode 100644 index 000000000..a19bd9413 --- /dev/null +++ b/atlassian/confluence/6.6.3/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.6.3 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.6.3/Makefile b/atlassian/confluence/6.6.3/Makefile new file mode 100644 index 000000000..ecb5e0dd8 --- /dev/null +++ b/atlassian/confluence/6.6.3/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.6.3 . + diff --git a/atlassian/confluence/6.6.3/README.md b/atlassian/confluence/6.6.3/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.6.3/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.6.3/entrypoint.sh b/atlassian/confluence/6.6.3/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.6.3/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.6.4/.docker-repository.yml b/atlassian/confluence/6.6.4/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.6.4/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.6.4/.dockerignore b/atlassian/confluence/6.6.4/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.6.4/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.6.4/Dockerfile b/atlassian/confluence/6.6.4/Dockerfile new file mode 100644 index 000000000..9c8864c32 --- /dev/null +++ b/atlassian/confluence/6.6.4/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.6.4 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.6.4/Makefile b/atlassian/confluence/6.6.4/Makefile new file mode 100644 index 000000000..47c8828ca --- /dev/null +++ b/atlassian/confluence/6.6.4/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.6.4 . + diff --git a/atlassian/confluence/6.6.4/README.md b/atlassian/confluence/6.6.4/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.6.4/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.6.4/entrypoint.sh b/atlassian/confluence/6.6.4/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.6.4/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.6.5/.docker-repository.yml b/atlassian/confluence/6.6.5/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.6.5/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.6.5/.dockerignore b/atlassian/confluence/6.6.5/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.6.5/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.6.5/Dockerfile b/atlassian/confluence/6.6.5/Dockerfile new file mode 100644 index 000000000..eec344827 --- /dev/null +++ b/atlassian/confluence/6.6.5/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.6.5 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.6.5/Makefile b/atlassian/confluence/6.6.5/Makefile new file mode 100644 index 000000000..9bdd33e42 --- /dev/null +++ b/atlassian/confluence/6.6.5/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.6.5 . + diff --git a/atlassian/confluence/6.6.5/README.md b/atlassian/confluence/6.6.5/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.6.5/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.6.5/entrypoint.sh b/atlassian/confluence/6.6.5/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.6.5/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.6.6/.docker-repository.yml b/atlassian/confluence/6.6.6/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.6.6/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.6.6/.dockerignore b/atlassian/confluence/6.6.6/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.6.6/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.6.6/Dockerfile b/atlassian/confluence/6.6.6/Dockerfile new file mode 100644 index 000000000..cadb2a898 --- /dev/null +++ b/atlassian/confluence/6.6.6/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.6.6 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.6.6/Makefile b/atlassian/confluence/6.6.6/Makefile new file mode 100644 index 000000000..8c37edc2f --- /dev/null +++ b/atlassian/confluence/6.6.6/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.6.6 . + diff --git a/atlassian/confluence/6.6.6/README.md b/atlassian/confluence/6.6.6/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.6.6/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.6.6/entrypoint.sh b/atlassian/confluence/6.6.6/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.6.6/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.6.7/.docker-repository.yml b/atlassian/confluence/6.6.7/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.6.7/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.6.7/.dockerignore b/atlassian/confluence/6.6.7/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.6.7/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.6.7/Dockerfile b/atlassian/confluence/6.6.7/Dockerfile new file mode 100644 index 000000000..2650f20ab --- /dev/null +++ b/atlassian/confluence/6.6.7/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.6.7 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.6.7/Makefile b/atlassian/confluence/6.6.7/Makefile new file mode 100644 index 000000000..d091db002 --- /dev/null +++ b/atlassian/confluence/6.6.7/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.6.7 . + diff --git a/atlassian/confluence/6.6.7/README.md b/atlassian/confluence/6.6.7/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.6.7/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.6.7/entrypoint.sh b/atlassian/confluence/6.6.7/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.6.7/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.6.8/.docker-repository.yml b/atlassian/confluence/6.6.8/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.6.8/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.6.8/.dockerignore b/atlassian/confluence/6.6.8/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.6.8/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.6.8/Dockerfile b/atlassian/confluence/6.6.8/Dockerfile new file mode 100644 index 000000000..408735cf7 --- /dev/null +++ b/atlassian/confluence/6.6.8/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.6.8 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.6.8/Makefile b/atlassian/confluence/6.6.8/Makefile new file mode 100644 index 000000000..d3628320b --- /dev/null +++ b/atlassian/confluence/6.6.8/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.6.8 . + diff --git a/atlassian/confluence/6.6.8/README.md b/atlassian/confluence/6.6.8/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.6.8/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.6.8/entrypoint.sh b/atlassian/confluence/6.6.8/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.6.8/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.6.9/.docker-repository.yml b/atlassian/confluence/6.6.9/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.6.9/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.6.9/.dockerignore b/atlassian/confluence/6.6.9/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.6.9/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.6.9/Dockerfile b/atlassian/confluence/6.6.9/Dockerfile new file mode 100644 index 000000000..5e3984215 --- /dev/null +++ b/atlassian/confluence/6.6.9/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.6.9 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.6.9/Makefile b/atlassian/confluence/6.6.9/Makefile new file mode 100644 index 000000000..6206d1f00 --- /dev/null +++ b/atlassian/confluence/6.6.9/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.6.9 . + diff --git a/atlassian/confluence/6.6.9/README.md b/atlassian/confluence/6.6.9/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.6.9/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.6.9/entrypoint.sh b/atlassian/confluence/6.6.9/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.6.9/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi From e5dfe0394e0b5e0347c776928b322ad199143523 Mon Sep 17 00:00:00 2001 From: stam Date: Thu, 16 Jan 2020 16:32:56 +0300 Subject: [PATCH 32/50] Confluence 6.7 --- .travis.yml | 18 +++ CHANGELOG.md | 1 + .../confluence/6.7.0/.docker-repository.yml | 1 + atlassian/confluence/6.7.0/.dockerignore | 3 + atlassian/confluence/6.7.0/Dockerfile | 46 ++++++ atlassian/confluence/6.7.0/Makefile | 5 + atlassian/confluence/6.7.0/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.7.0/entrypoint.sh | 39 ++++++ .../confluence/6.7.1/.docker-repository.yml | 1 + atlassian/confluence/6.7.1/.dockerignore | 3 + atlassian/confluence/6.7.1/Dockerfile | 46 ++++++ atlassian/confluence/6.7.1/Makefile | 5 + atlassian/confluence/6.7.1/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.7.1/entrypoint.sh | 39 ++++++ .../confluence/6.7.2/.docker-repository.yml | 1 + atlassian/confluence/6.7.2/.dockerignore | 3 + atlassian/confluence/6.7.2/Dockerfile | 46 ++++++ atlassian/confluence/6.7.2/Makefile | 5 + atlassian/confluence/6.7.2/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.7.2/entrypoint.sh | 39 ++++++ .../confluence/6.7.3/.docker-repository.yml | 1 + atlassian/confluence/6.7.3/.dockerignore | 3 + atlassian/confluence/6.7.3/Dockerfile | 46 ++++++ atlassian/confluence/6.7.3/Makefile | 5 + atlassian/confluence/6.7.3/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.7.3/entrypoint.sh | 39 ++++++ 26 files changed, 919 insertions(+) create mode 100644 atlassian/confluence/6.7.0/.docker-repository.yml create mode 100644 atlassian/confluence/6.7.0/.dockerignore create mode 100644 atlassian/confluence/6.7.0/Dockerfile create mode 100644 atlassian/confluence/6.7.0/Makefile create mode 100644 atlassian/confluence/6.7.0/README.md create mode 100644 atlassian/confluence/6.7.0/entrypoint.sh create mode 100644 atlassian/confluence/6.7.1/.docker-repository.yml create mode 100644 atlassian/confluence/6.7.1/.dockerignore create mode 100644 atlassian/confluence/6.7.1/Dockerfile create mode 100644 atlassian/confluence/6.7.1/Makefile create mode 100644 atlassian/confluence/6.7.1/README.md create mode 100644 atlassian/confluence/6.7.1/entrypoint.sh create mode 100644 atlassian/confluence/6.7.2/.docker-repository.yml create mode 100644 atlassian/confluence/6.7.2/.dockerignore create mode 100644 atlassian/confluence/6.7.2/Dockerfile create mode 100644 atlassian/confluence/6.7.2/Makefile create mode 100644 atlassian/confluence/6.7.2/README.md create mode 100644 atlassian/confluence/6.7.2/entrypoint.sh create mode 100644 atlassian/confluence/6.7.3/.docker-repository.yml create mode 100644 atlassian/confluence/6.7.3/.dockerignore create mode 100644 atlassian/confluence/6.7.3/Dockerfile create mode 100644 atlassian/confluence/6.7.3/Makefile create mode 100644 atlassian/confluence/6.7.3/README.md create mode 100644 atlassian/confluence/6.7.3/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index 0b80c1da2..9516a68c7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -705,6 +705,24 @@ matrix: - docker build --compress -t epicmorg/confluence:6.6.17 atlassian/confluence/6.6.17 - docker push epicmorg/confluence:6.6.17 +########## + + - name: Confluence 6.7.x + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + + - docker build --compress -t epicmorg/confluence:6.7.0 atlassian/confluence/6.7.0 + - docker push epicmorg/confluence:6.7.0 + + - docker build --compress -t epicmorg/confluence:6.7.1 atlassian/confluence/6.7.1 + - docker push epicmorg/confluence:6.7.1 + + - docker build --compress -t epicmorg/confluence:6.7.2 atlassian/confluence/6.7.2 + - docker push epicmorg/confluence:6.7.2 + + - docker build --compress -t epicmorg/confluence:6.7.3 atlassian/confluence/6.7.3 + - docker push epicmorg/confluence:6.7.3 + ########## - name: Confluence 6.9.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index 31c4de6b3..2dc9e155b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,7 @@ * added `Confluence 6.4.x`: `6.4.0`, `6.4.1`, `6.4.2`, `6.4.3` * added `Confluence 6.5.x`: `6.5.0`, `6.5.1`, `6.5.2`, `6.5.3` * added `Confluence 6.6.x`: `6.6.0`, `6.6.1`, `6.6.2`, `6.6.3`, `6.6.4`, `6.6.5`, `6.6.6`, `6.6.7`, `6.6.8`, `6.6.9`, `6.6.10`, `6.6.11`, `6.6.12`, `6.6.13`, `6.6.14`, `6.6.15`, `6.6.17` + * added `Confluence 6.7.x`: `6.7.0`, `6.7.1`, `6.7.2`, `6.7.3` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/confluence/6.7.0/.docker-repository.yml b/atlassian/confluence/6.7.0/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.7.0/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.7.0/.dockerignore b/atlassian/confluence/6.7.0/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.7.0/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.7.0/Dockerfile b/atlassian/confluence/6.7.0/Dockerfile new file mode 100644 index 000000000..9dc91e223 --- /dev/null +++ b/atlassian/confluence/6.7.0/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.7.0 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.7.0/Makefile b/atlassian/confluence/6.7.0/Makefile new file mode 100644 index 000000000..23bfba3d1 --- /dev/null +++ b/atlassian/confluence/6.7.0/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.7.0 . + diff --git a/atlassian/confluence/6.7.0/README.md b/atlassian/confluence/6.7.0/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.7.0/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.7.0/entrypoint.sh b/atlassian/confluence/6.7.0/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.7.0/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.7.1/.docker-repository.yml b/atlassian/confluence/6.7.1/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.7.1/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.7.1/.dockerignore b/atlassian/confluence/6.7.1/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.7.1/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.7.1/Dockerfile b/atlassian/confluence/6.7.1/Dockerfile new file mode 100644 index 000000000..d868cca9e --- /dev/null +++ b/atlassian/confluence/6.7.1/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.7.1 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.7.1/Makefile b/atlassian/confluence/6.7.1/Makefile new file mode 100644 index 000000000..0375c7354 --- /dev/null +++ b/atlassian/confluence/6.7.1/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.7.1 . + diff --git a/atlassian/confluence/6.7.1/README.md b/atlassian/confluence/6.7.1/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.7.1/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.7.1/entrypoint.sh b/atlassian/confluence/6.7.1/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.7.1/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.7.2/.docker-repository.yml b/atlassian/confluence/6.7.2/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.7.2/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.7.2/.dockerignore b/atlassian/confluence/6.7.2/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.7.2/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.7.2/Dockerfile b/atlassian/confluence/6.7.2/Dockerfile new file mode 100644 index 000000000..bde658aa8 --- /dev/null +++ b/atlassian/confluence/6.7.2/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.7.2 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.7.2/Makefile b/atlassian/confluence/6.7.2/Makefile new file mode 100644 index 000000000..4f78c9478 --- /dev/null +++ b/atlassian/confluence/6.7.2/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.7.2 . + diff --git a/atlassian/confluence/6.7.2/README.md b/atlassian/confluence/6.7.2/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.7.2/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.7.2/entrypoint.sh b/atlassian/confluence/6.7.2/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.7.2/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.7.3/.docker-repository.yml b/atlassian/confluence/6.7.3/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.7.3/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.7.3/.dockerignore b/atlassian/confluence/6.7.3/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.7.3/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.7.3/Dockerfile b/atlassian/confluence/6.7.3/Dockerfile new file mode 100644 index 000000000..cf138aaf8 --- /dev/null +++ b/atlassian/confluence/6.7.3/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.7.3 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.7.3/Makefile b/atlassian/confluence/6.7.3/Makefile new file mode 100644 index 000000000..f53fd1b3e --- /dev/null +++ b/atlassian/confluence/6.7.3/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.7.3 . + diff --git a/atlassian/confluence/6.7.3/README.md b/atlassian/confluence/6.7.3/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.7.3/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.7.3/entrypoint.sh b/atlassian/confluence/6.7.3/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.7.3/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi From 5dd50ec36db4ce4e31f7b260bfeb585023ee01bf Mon Sep 17 00:00:00 2001 From: stam Date: Thu, 16 Jan 2020 16:35:49 +0300 Subject: [PATCH 33/50] Confluence 6.8 --- CHANGELOG.md | 1 + .../confluence/6.8.0/.docker-repository.yml | 1 + atlassian/confluence/6.8.0/.dockerignore | 3 + atlassian/confluence/6.8.0/Dockerfile | 46 ++++++ atlassian/confluence/6.8.0/Makefile | 5 + atlassian/confluence/6.8.0/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.8.0/entrypoint.sh | 39 ++++++ .../confluence/6.8.1/.docker-repository.yml | 1 + atlassian/confluence/6.8.1/.dockerignore | 3 + atlassian/confluence/6.8.1/Dockerfile | 46 ++++++ atlassian/confluence/6.8.1/Makefile | 5 + atlassian/confluence/6.8.1/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.8.1/entrypoint.sh | 39 ++++++ .../confluence/6.8.2/.docker-repository.yml | 1 + atlassian/confluence/6.8.2/.dockerignore | 3 + atlassian/confluence/6.8.2/Dockerfile | 46 ++++++ atlassian/confluence/6.8.2/Makefile | 5 + atlassian/confluence/6.8.2/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.8.2/entrypoint.sh | 39 ++++++ .../confluence/6.8.3/.docker-repository.yml | 1 + atlassian/confluence/6.8.3/.dockerignore | 3 + atlassian/confluence/6.8.3/Dockerfile | 46 ++++++ atlassian/confluence/6.8.3/Makefile | 5 + atlassian/confluence/6.8.3/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.8.3/entrypoint.sh | 39 ++++++ .../confluence/6.8.5/.docker-repository.yml | 1 + atlassian/confluence/6.8.5/.dockerignore | 3 + atlassian/confluence/6.8.5/Dockerfile | 46 ++++++ atlassian/confluence/6.8.5/Makefile | 5 + atlassian/confluence/6.8.5/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.8.5/entrypoint.sh | 39 ++++++ 31 files changed, 1126 insertions(+) create mode 100644 atlassian/confluence/6.8.0/.docker-repository.yml create mode 100644 atlassian/confluence/6.8.0/.dockerignore create mode 100644 atlassian/confluence/6.8.0/Dockerfile create mode 100644 atlassian/confluence/6.8.0/Makefile create mode 100644 atlassian/confluence/6.8.0/README.md create mode 100644 atlassian/confluence/6.8.0/entrypoint.sh create mode 100644 atlassian/confluence/6.8.1/.docker-repository.yml create mode 100644 atlassian/confluence/6.8.1/.dockerignore create mode 100644 atlassian/confluence/6.8.1/Dockerfile create mode 100644 atlassian/confluence/6.8.1/Makefile create mode 100644 atlassian/confluence/6.8.1/README.md create mode 100644 atlassian/confluence/6.8.1/entrypoint.sh create mode 100644 atlassian/confluence/6.8.2/.docker-repository.yml create mode 100644 atlassian/confluence/6.8.2/.dockerignore create mode 100644 atlassian/confluence/6.8.2/Dockerfile create mode 100644 atlassian/confluence/6.8.2/Makefile create mode 100644 atlassian/confluence/6.8.2/README.md create mode 100644 atlassian/confluence/6.8.2/entrypoint.sh create mode 100644 atlassian/confluence/6.8.3/.docker-repository.yml create mode 100644 atlassian/confluence/6.8.3/.dockerignore create mode 100644 atlassian/confluence/6.8.3/Dockerfile create mode 100644 atlassian/confluence/6.8.3/Makefile create mode 100644 atlassian/confluence/6.8.3/README.md create mode 100644 atlassian/confluence/6.8.3/entrypoint.sh create mode 100644 atlassian/confluence/6.8.5/.docker-repository.yml create mode 100644 atlassian/confluence/6.8.5/.dockerignore create mode 100644 atlassian/confluence/6.8.5/Dockerfile create mode 100644 atlassian/confluence/6.8.5/Makefile create mode 100644 atlassian/confluence/6.8.5/README.md create mode 100644 atlassian/confluence/6.8.5/entrypoint.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index 2dc9e155b..35accc9d7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ * added `Confluence 6.5.x`: `6.5.0`, `6.5.1`, `6.5.2`, `6.5.3` * added `Confluence 6.6.x`: `6.6.0`, `6.6.1`, `6.6.2`, `6.6.3`, `6.6.4`, `6.6.5`, `6.6.6`, `6.6.7`, `6.6.8`, `6.6.9`, `6.6.10`, `6.6.11`, `6.6.12`, `6.6.13`, `6.6.14`, `6.6.15`, `6.6.17` * added `Confluence 6.7.x`: `6.7.0`, `6.7.1`, `6.7.2`, `6.7.3` + * added `Confluence 6.8.x`: `6.8.0`, `6.8.1`, `6.8.2`, `6.8.3`, `6.8.5` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/confluence/6.8.0/.docker-repository.yml b/atlassian/confluence/6.8.0/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.8.0/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.8.0/.dockerignore b/atlassian/confluence/6.8.0/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.8.0/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.8.0/Dockerfile b/atlassian/confluence/6.8.0/Dockerfile new file mode 100644 index 000000000..6b0568acc --- /dev/null +++ b/atlassian/confluence/6.8.0/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.8.0 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.8.0/Makefile b/atlassian/confluence/6.8.0/Makefile new file mode 100644 index 000000000..8914687ef --- /dev/null +++ b/atlassian/confluence/6.8.0/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.8.0 . + diff --git a/atlassian/confluence/6.8.0/README.md b/atlassian/confluence/6.8.0/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.8.0/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.8.0/entrypoint.sh b/atlassian/confluence/6.8.0/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.8.0/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.8.1/.docker-repository.yml b/atlassian/confluence/6.8.1/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.8.1/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.8.1/.dockerignore b/atlassian/confluence/6.8.1/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.8.1/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.8.1/Dockerfile b/atlassian/confluence/6.8.1/Dockerfile new file mode 100644 index 000000000..9473a5c21 --- /dev/null +++ b/atlassian/confluence/6.8.1/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.8.1 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.8.1/Makefile b/atlassian/confluence/6.8.1/Makefile new file mode 100644 index 000000000..18152fd63 --- /dev/null +++ b/atlassian/confluence/6.8.1/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.8.1 . + diff --git a/atlassian/confluence/6.8.1/README.md b/atlassian/confluence/6.8.1/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.8.1/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.8.1/entrypoint.sh b/atlassian/confluence/6.8.1/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.8.1/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.8.2/.docker-repository.yml b/atlassian/confluence/6.8.2/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.8.2/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.8.2/.dockerignore b/atlassian/confluence/6.8.2/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.8.2/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.8.2/Dockerfile b/atlassian/confluence/6.8.2/Dockerfile new file mode 100644 index 000000000..daa28275d --- /dev/null +++ b/atlassian/confluence/6.8.2/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.8.2 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.8.2/Makefile b/atlassian/confluence/6.8.2/Makefile new file mode 100644 index 000000000..644a64e9a --- /dev/null +++ b/atlassian/confluence/6.8.2/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.8.2 . + diff --git a/atlassian/confluence/6.8.2/README.md b/atlassian/confluence/6.8.2/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.8.2/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.8.2/entrypoint.sh b/atlassian/confluence/6.8.2/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.8.2/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.8.3/.docker-repository.yml b/atlassian/confluence/6.8.3/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.8.3/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.8.3/.dockerignore b/atlassian/confluence/6.8.3/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.8.3/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.8.3/Dockerfile b/atlassian/confluence/6.8.3/Dockerfile new file mode 100644 index 000000000..23aa96760 --- /dev/null +++ b/atlassian/confluence/6.8.3/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.8.3 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.8.3/Makefile b/atlassian/confluence/6.8.3/Makefile new file mode 100644 index 000000000..fc299aceb --- /dev/null +++ b/atlassian/confluence/6.8.3/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.8.3 . + diff --git a/atlassian/confluence/6.8.3/README.md b/atlassian/confluence/6.8.3/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.8.3/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.8.3/entrypoint.sh b/atlassian/confluence/6.8.3/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.8.3/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.8.5/.docker-repository.yml b/atlassian/confluence/6.8.5/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.8.5/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.8.5/.dockerignore b/atlassian/confluence/6.8.5/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.8.5/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.8.5/Dockerfile b/atlassian/confluence/6.8.5/Dockerfile new file mode 100644 index 000000000..5d4878265 --- /dev/null +++ b/atlassian/confluence/6.8.5/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.8.5 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.8.5/Makefile b/atlassian/confluence/6.8.5/Makefile new file mode 100644 index 000000000..45a3c676a --- /dev/null +++ b/atlassian/confluence/6.8.5/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.8.5 . + diff --git a/atlassian/confluence/6.8.5/README.md b/atlassian/confluence/6.8.5/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.8.5/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.8.5/entrypoint.sh b/atlassian/confluence/6.8.5/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.8.5/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi From 721073863a904445b8dec3b29e6dca1ce6532d22 Mon Sep 17 00:00:00 2001 From: stam Date: Thu, 16 Jan 2020 16:42:45 +0300 Subject: [PATCH 34/50] Confluence 6.8 --- .travis.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/.travis.yml b/.travis.yml index 9516a68c7..1dfbd080e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -742,6 +742,27 @@ matrix: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/confluence:6.9.3 atlassian/confluence/6.9.3 - docker push epicmorg/confluence:6.9.3 + +########## + + - name: Confluence 6.8.x + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + + - docker build --compress -t epicmorg/confluence:6.8.0 atlassian/confluence/6.8.0 + - docker push epicmorg/confluence:6.8.0 + + - docker build --compress -t epicmorg/confluence:6.8.1 atlassian/confluence/6.8.1 + - docker push epicmorg/confluence:6.8.1 + + - docker build --compress -t epicmorg/confluence:6.7.2 atlassian/confluence/6.7.2 + - docker push epicmorg/confluence:6.8.2 + + - docker build --compress -t epicmorg/confluence:6.8.3 atlassian/confluence/6.8.3 + - docker push epicmorg/confluence:6.8.3 + + - docker build --compress -t epicmorg/confluence:6.8.5 atlassian/confluence/6.8.5 + - docker push epicmorg/confluence:6.8.5 ########## From 84171dbf3c32d55c5a3ce90512638a80b186747c Mon Sep 17 00:00:00 2001 From: stam Date: Thu, 16 Jan 2020 16:45:05 +0300 Subject: [PATCH 35/50] Confluence 6.10 --- .travis.yml | 55 ++++---- CHANGELOG.md | 1 + .../confluence/6.10.3/.docker-repository.yml | 1 + atlassian/confluence/6.10.3/.dockerignore | 3 + atlassian/confluence/6.10.3/Dockerfile | 46 ++++++ atlassian/confluence/6.10.3/Makefile | 4 + atlassian/confluence/6.10.3/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.10.3/entrypoint.sh | 39 ++++++ 8 files changed, 251 insertions(+), 29 deletions(-) create mode 100644 atlassian/confluence/6.10.3/.docker-repository.yml create mode 100644 atlassian/confluence/6.10.3/.dockerignore create mode 100644 atlassian/confluence/6.10.3/Dockerfile create mode 100644 atlassian/confluence/6.10.3/Makefile create mode 100644 atlassian/confluence/6.10.3/README.md create mode 100644 atlassian/confluence/6.10.3/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index 1dfbd080e..3b89ee36e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -722,26 +722,6 @@ matrix: - docker build --compress -t epicmorg/confluence:6.7.3 atlassian/confluence/6.7.3 - docker push epicmorg/confluence:6.7.3 - -########## - - - name: Confluence 6.9.0 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - - docker build --compress -t epicmorg/confluence:6.9.0 atlassian/confluence/6.9.0 - - docker push epicmorg/confluence:6.9.0 - - - name: Confluence 6.9.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - - docker build --compress -t epicmorg/confluence:6.9.1 atlassian/confluence/6.9.1 - - docker push epicmorg/confluence:6.9.1 - - - name: Confluence 6.9.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - - docker build --compress -t epicmorg/confluence:6.9.3 atlassian/confluence/6.9.3 - - docker push epicmorg/confluence:6.9.3 ########## @@ -766,23 +746,40 @@ matrix: ########## - - name: Confluence 6.10.0 + - name: Confluence 6.9.0 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.9.0 atlassian/confluence/6.9.0 + - docker push epicmorg/confluence:6.9.0 + + - name: Confluence 6.9.1 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.9.1 atlassian/confluence/6.9.1 + - docker push epicmorg/confluence:6.9.1 + + - name: Confluence 6.9.3 + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.9.3 atlassian/confluence/6.9.3 + - docker push epicmorg/confluence:6.9.3 + +########## + + - name: Confluence 6.10.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/confluence:6.10.0 atlassian/confluence/6.10.0 - docker push epicmorg/confluence:6.10.0 - - - name: Confluence 6.10.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.10.1 atlassian/confluence/6.10.1 - docker push epicmorg/confluence:6.10.1 - - - name: Confluence 6.10.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.10.2 atlassian/confluence/6.10.2 - docker push epicmorg/confluence:6.10.2 + + - docker build --compress -t epicmorg/confluence:6.10.3 atlassian/confluence/6.10.3 + - docker push epicmorg/confluence:6.10.3 ########## diff --git a/CHANGELOG.md b/CHANGELOG.md index 35accc9d7..cbbf4339c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ * added `Confluence 6.6.x`: `6.6.0`, `6.6.1`, `6.6.2`, `6.6.3`, `6.6.4`, `6.6.5`, `6.6.6`, `6.6.7`, `6.6.8`, `6.6.9`, `6.6.10`, `6.6.11`, `6.6.12`, `6.6.13`, `6.6.14`, `6.6.15`, `6.6.17` * added `Confluence 6.7.x`: `6.7.0`, `6.7.1`, `6.7.2`, `6.7.3` * added `Confluence 6.8.x`: `6.8.0`, `6.8.1`, `6.8.2`, `6.8.3`, `6.8.5` + * added `Confluence 6.10.x`: `6.10.3` * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/confluence/6.10.3/.docker-repository.yml b/atlassian/confluence/6.10.3/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.10.3/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.10.3/.dockerignore b/atlassian/confluence/6.10.3/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.10.3/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.10.3/Dockerfile b/atlassian/confluence/6.10.3/Dockerfile new file mode 100644 index 000000000..0f996919e --- /dev/null +++ b/atlassian/confluence/6.10.3/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.10.3 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.10.3/Makefile b/atlassian/confluence/6.10.3/Makefile new file mode 100644 index 000000000..3efab142b --- /dev/null +++ b/atlassian/confluence/6.10.3/Makefile @@ -0,0 +1,4 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.10.3 . diff --git a/atlassian/confluence/6.10.3/README.md b/atlassian/confluence/6.10.3/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.10.3/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.10.3/entrypoint.sh b/atlassian/confluence/6.10.3/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.10.3/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi From e8ec34deb920604b9129627e7be26e9cc74e88d2 Mon Sep 17 00:00:00 2001 From: stam Date: Thu, 16 Jan 2020 16:48:34 +0300 Subject: [PATCH 36/50] Confluence 6.13 --- .travis.yml | 40 +++--- CHANGELOG.md | 1 + .../confluence/6.13.10/.docker-repository.yml | 1 + atlassian/confluence/6.13.10/.dockerignore | 3 + atlassian/confluence/6.13.10/Dockerfile | 46 ++++++ atlassian/confluence/6.13.10/Makefile | 4 + atlassian/confluence/6.13.10/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.13.10/entrypoint.sh | 39 ++++++ .../confluence/6.13.5/.docker-repository.yml | 1 + atlassian/confluence/6.13.5/.dockerignore | 3 + atlassian/confluence/6.13.5/Dockerfile | 46 ++++++ atlassian/confluence/6.13.5/Makefile | 4 + atlassian/confluence/6.13.5/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.13.5/entrypoint.sh | 39 ++++++ .../confluence/6.13.6/.docker-repository.yml | 1 + atlassian/confluence/6.13.6/.dockerignore | 3 + atlassian/confluence/6.13.6/Dockerfile | 46 ++++++ atlassian/confluence/6.13.6/Makefile | 4 + atlassian/confluence/6.13.6/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.13.6/entrypoint.sh | 39 ++++++ .../confluence/6.13.7/.docker-repository.yml | 1 + atlassian/confluence/6.13.7/.dockerignore | 3 + atlassian/confluence/6.13.7/Dockerfile | 46 ++++++ atlassian/confluence/6.13.7/Makefile | 4 + atlassian/confluence/6.13.7/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.13.7/entrypoint.sh | 39 ++++++ .../confluence/6.13.8/.docker-repository.yml | 1 + atlassian/confluence/6.13.8/.dockerignore | 3 + atlassian/confluence/6.13.8/Dockerfile | 46 ++++++ atlassian/confluence/6.13.8/Makefile | 4 + atlassian/confluence/6.13.8/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.13.8/entrypoint.sh | 39 ++++++ .../confluence/6.13.9/.docker-repository.yml | 1 + atlassian/confluence/6.13.9/.dockerignore | 3 + atlassian/confluence/6.13.9/Dockerfile | 46 ++++++ atlassian/confluence/6.13.9/Makefile | 4 + atlassian/confluence/6.13.9/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.13.9/entrypoint.sh | 39 ++++++ 38 files changed, 1368 insertions(+), 17 deletions(-) create mode 100644 atlassian/confluence/6.13.10/.docker-repository.yml create mode 100644 atlassian/confluence/6.13.10/.dockerignore create mode 100644 atlassian/confluence/6.13.10/Dockerfile create mode 100644 atlassian/confluence/6.13.10/Makefile create mode 100644 atlassian/confluence/6.13.10/README.md create mode 100644 atlassian/confluence/6.13.10/entrypoint.sh create mode 100644 atlassian/confluence/6.13.5/.docker-repository.yml create mode 100644 atlassian/confluence/6.13.5/.dockerignore create mode 100644 atlassian/confluence/6.13.5/Dockerfile create mode 100644 atlassian/confluence/6.13.5/Makefile create mode 100644 atlassian/confluence/6.13.5/README.md create mode 100644 atlassian/confluence/6.13.5/entrypoint.sh create mode 100644 atlassian/confluence/6.13.6/.docker-repository.yml create mode 100644 atlassian/confluence/6.13.6/.dockerignore create mode 100644 atlassian/confluence/6.13.6/Dockerfile create mode 100644 atlassian/confluence/6.13.6/Makefile create mode 100644 atlassian/confluence/6.13.6/README.md create mode 100644 atlassian/confluence/6.13.6/entrypoint.sh create mode 100644 atlassian/confluence/6.13.7/.docker-repository.yml create mode 100644 atlassian/confluence/6.13.7/.dockerignore create mode 100644 atlassian/confluence/6.13.7/Dockerfile create mode 100644 atlassian/confluence/6.13.7/Makefile create mode 100644 atlassian/confluence/6.13.7/README.md create mode 100644 atlassian/confluence/6.13.7/entrypoint.sh create mode 100644 atlassian/confluence/6.13.8/.docker-repository.yml create mode 100644 atlassian/confluence/6.13.8/.dockerignore create mode 100644 atlassian/confluence/6.13.8/Dockerfile create mode 100644 atlassian/confluence/6.13.8/Makefile create mode 100644 atlassian/confluence/6.13.8/README.md create mode 100644 atlassian/confluence/6.13.8/entrypoint.sh create mode 100644 atlassian/confluence/6.13.9/.docker-repository.yml create mode 100644 atlassian/confluence/6.13.9/.dockerignore create mode 100644 atlassian/confluence/6.13.9/Dockerfile create mode 100644 atlassian/confluence/6.13.9/Makefile create mode 100644 atlassian/confluence/6.13.9/README.md create mode 100644 atlassian/confluence/6.13.9/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index 3b89ee36e..483740dbf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -835,36 +835,42 @@ matrix: ########## - - name: Confluence 6.13.0 + - name: Confluence 6.13.x LTS script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/confluence:6.13.0 atlassian/confluence/6.13.0 - docker push epicmorg/confluence:6.13.0 - - - name: Confluence 6.13.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.13.1 atlassian/confluence/6.13.1 - docker push epicmorg/confluence:6.13.1 - - - name: Confluence 6.13.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.13.2 atlassian/confluence/6.13.2 - docker push epicmorg/confluence:6.13.2 - - - name: Confluence 6.13.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.13.3 atlassian/confluence/6.13.3 - docker push epicmorg/confluence:6.13.3 - - - name: Confluence 6.13.4 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.13.4 atlassian/confluence/6.13.4 - docker push epicmorg/confluence:6.13.4 + - docker build --compress -t epicmorg/confluence:6.13.5 atlassian/confluence/6.13.5 + - docker push epicmorg/confluence:6.13.5 + + - docker build --compress -t epicmorg/confluence:6.13.6 atlassian/confluence/6.13.6 + - docker push epicmorg/confluence:6.13.6 + + - docker build --compress -t epicmorg/confluence:6.13.7 atlassian/confluence/6.13.7 + - docker push epicmorg/confluence:6.13.7 + + - docker build --compress -t epicmorg/confluence:6.13.8 atlassian/confluence/6.13.8 + - docker push epicmorg/confluence:6.13.8 + + - docker build --compress -t epicmorg/confluence:6.13.9 atlassian/confluence/6.13.9 + - docker push epicmorg/confluence:6.13.9 + + - docker build --compress -t epicmorg/confluence:6.13.10 atlassian/confluence/6.13.10 + - docker push epicmorg/confluence:6.13.10 + ########## - name: Confluence 6.14.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index cbbf4339c..c206cd319 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,7 @@ * added `Confluence 6.7.x`: `6.7.0`, `6.7.1`, `6.7.2`, `6.7.3` * added `Confluence 6.8.x`: `6.8.0`, `6.8.1`, `6.8.2`, `6.8.3`, `6.8.5` * added `Confluence 6.10.x`: `6.10.3` + * added `Confluence 6.13.x`: `6.10.5`, `6.10.6`, `6.10.7`, `6.10.8`, `6.10.9`, `6.10.10`, * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/confluence/6.13.10/.docker-repository.yml b/atlassian/confluence/6.13.10/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.13.10/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.13.10/.dockerignore b/atlassian/confluence/6.13.10/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.13.10/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.13.10/Dockerfile b/atlassian/confluence/6.13.10/Dockerfile new file mode 100644 index 000000000..819172b1e --- /dev/null +++ b/atlassian/confluence/6.13.10/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.13.10 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.13.10/Makefile b/atlassian/confluence/6.13.10/Makefile new file mode 100644 index 000000000..ae06f9246 --- /dev/null +++ b/atlassian/confluence/6.13.10/Makefile @@ -0,0 +1,4 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.13.10 . diff --git a/atlassian/confluence/6.13.10/README.md b/atlassian/confluence/6.13.10/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.13.10/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.13.10/entrypoint.sh b/atlassian/confluence/6.13.10/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.13.10/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.13.5/.docker-repository.yml b/atlassian/confluence/6.13.5/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.13.5/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.13.5/.dockerignore b/atlassian/confluence/6.13.5/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.13.5/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.13.5/Dockerfile b/atlassian/confluence/6.13.5/Dockerfile new file mode 100644 index 000000000..a3a26f6c1 --- /dev/null +++ b/atlassian/confluence/6.13.5/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.13.5 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.13.5/Makefile b/atlassian/confluence/6.13.5/Makefile new file mode 100644 index 000000000..51b8004b9 --- /dev/null +++ b/atlassian/confluence/6.13.5/Makefile @@ -0,0 +1,4 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.13.5 . diff --git a/atlassian/confluence/6.13.5/README.md b/atlassian/confluence/6.13.5/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.13.5/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.13.5/entrypoint.sh b/atlassian/confluence/6.13.5/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.13.5/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.13.6/.docker-repository.yml b/atlassian/confluence/6.13.6/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.13.6/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.13.6/.dockerignore b/atlassian/confluence/6.13.6/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.13.6/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.13.6/Dockerfile b/atlassian/confluence/6.13.6/Dockerfile new file mode 100644 index 000000000..e7ddfccfd --- /dev/null +++ b/atlassian/confluence/6.13.6/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.13.6 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.13.6/Makefile b/atlassian/confluence/6.13.6/Makefile new file mode 100644 index 000000000..f97a67aac --- /dev/null +++ b/atlassian/confluence/6.13.6/Makefile @@ -0,0 +1,4 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.13.6 . diff --git a/atlassian/confluence/6.13.6/README.md b/atlassian/confluence/6.13.6/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.13.6/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.13.6/entrypoint.sh b/atlassian/confluence/6.13.6/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.13.6/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.13.7/.docker-repository.yml b/atlassian/confluence/6.13.7/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.13.7/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.13.7/.dockerignore b/atlassian/confluence/6.13.7/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.13.7/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.13.7/Dockerfile b/atlassian/confluence/6.13.7/Dockerfile new file mode 100644 index 000000000..ec43a52b7 --- /dev/null +++ b/atlassian/confluence/6.13.7/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.13.7 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.13.7/Makefile b/atlassian/confluence/6.13.7/Makefile new file mode 100644 index 000000000..67ea1401b --- /dev/null +++ b/atlassian/confluence/6.13.7/Makefile @@ -0,0 +1,4 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.13.7 . diff --git a/atlassian/confluence/6.13.7/README.md b/atlassian/confluence/6.13.7/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.13.7/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.13.7/entrypoint.sh b/atlassian/confluence/6.13.7/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.13.7/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.13.8/.docker-repository.yml b/atlassian/confluence/6.13.8/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.13.8/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.13.8/.dockerignore b/atlassian/confluence/6.13.8/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.13.8/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.13.8/Dockerfile b/atlassian/confluence/6.13.8/Dockerfile new file mode 100644 index 000000000..f31478c3f --- /dev/null +++ b/atlassian/confluence/6.13.8/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.13.8 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.13.8/Makefile b/atlassian/confluence/6.13.8/Makefile new file mode 100644 index 000000000..40f704f85 --- /dev/null +++ b/atlassian/confluence/6.13.8/Makefile @@ -0,0 +1,4 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.13.8 . diff --git a/atlassian/confluence/6.13.8/README.md b/atlassian/confluence/6.13.8/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.13.8/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.13.8/entrypoint.sh b/atlassian/confluence/6.13.8/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.13.8/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/6.13.9/.docker-repository.yml b/atlassian/confluence/6.13.9/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.13.9/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.13.9/.dockerignore b/atlassian/confluence/6.13.9/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.13.9/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.13.9/Dockerfile b/atlassian/confluence/6.13.9/Dockerfile new file mode 100644 index 000000000..23d27cfbd --- /dev/null +++ b/atlassian/confluence/6.13.9/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.13.9 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.13.9/Makefile b/atlassian/confluence/6.13.9/Makefile new file mode 100644 index 000000000..123908ce1 --- /dev/null +++ b/atlassian/confluence/6.13.9/Makefile @@ -0,0 +1,4 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.13.9 . diff --git a/atlassian/confluence/6.13.9/README.md b/atlassian/confluence/6.13.9/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.13.9/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.13.9/entrypoint.sh b/atlassian/confluence/6.13.9/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.13.9/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi From b2dcea0e1b7b88289482a725f92df7ae14c47db2 Mon Sep 17 00:00:00 2001 From: stam Date: Thu, 16 Jan 2020 16:49:39 +0300 Subject: [PATCH 37/50] Confluence 6.15 --- .travis.yml | 35 ++--- .../confluence/6.15.10/.docker-repository.yml | 1 + atlassian/confluence/6.15.10/.dockerignore | 3 + atlassian/confluence/6.15.10/Dockerfile | 46 ++++++ atlassian/confluence/6.15.10/Makefile | 4 + atlassian/confluence/6.15.10/README.md | 131 ++++++++++++++++++ atlassian/confluence/6.15.10/entrypoint.sh | 39 ++++++ 7 files changed, 234 insertions(+), 25 deletions(-) create mode 100644 atlassian/confluence/6.15.10/.docker-repository.yml create mode 100644 atlassian/confluence/6.15.10/.dockerignore create mode 100644 atlassian/confluence/6.15.10/Dockerfile create mode 100644 atlassian/confluence/6.15.10/Makefile create mode 100644 atlassian/confluence/6.15.10/README.md create mode 100644 atlassian/confluence/6.15.10/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index 483740dbf..5bc109d0b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -899,48 +899,33 @@ matrix: ########## - - name: Confluence 6.15.1 + - name: Confluence 6.15.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/confluence:6.15.1 atlassian/confluence/6.15.1 - docker push epicmorg/confluence:6.15.1 - - - name: Confluence 6.15.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.15.2 atlassian/confluence/6.15.2 - docker push epicmorg/confluence:6.15.2 - - - name: Confluence 6.15.4 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.15.4 atlassian/confluence/6.15.4 - docker push epicmorg/confluence:6.15.4 - - - name: Confluence 6.15.6 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.15.6 atlassian/confluence/6.15.6 - docker push epicmorg/confluence:6.15.6 - - - name: Confluence 6.15.7 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.15.7 atlassian/confluence/6.15.7 - docker push epicmorg/confluence:6.15.7 - - - name: Confluence 6.15.8 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.15.8 atlassian/confluence/6.15.8 - docker push epicmorg/confluence:6.15.8 - - - name: Confluence 6.15.9 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.15.9 atlassian/confluence/6.15.9 - docker push epicmorg/confluence:6.15.9 + - docker build --compress -t epicmorg/confluence:6.15.10 atlassian/confluence/6.15.10 + - docker push epicmorg/confluence:6.15.10 + ########## - name: Confluence 7.0.1 diff --git a/atlassian/confluence/6.15.10/.docker-repository.yml b/atlassian/confluence/6.15.10/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/6.15.10/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/6.15.10/.dockerignore b/atlassian/confluence/6.15.10/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/6.15.10/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/6.15.10/Dockerfile b/atlassian/confluence/6.15.10/Dockerfile new file mode 100644 index 000000000..390873ab3 --- /dev/null +++ b/atlassian/confluence/6.15.10/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=6.15.10 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/6.15.10/Makefile b/atlassian/confluence/6.15.10/Makefile new file mode 100644 index 000000000..ac511814c --- /dev/null +++ b/atlassian/confluence/6.15.10/Makefile @@ -0,0 +1,4 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:6.15.10 . diff --git a/atlassian/confluence/6.15.10/README.md b/atlassian/confluence/6.15.10/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/6.15.10/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/6.15.10/entrypoint.sh b/atlassian/confluence/6.15.10/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/6.15.10/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi From cd1a188535b8ae846c6627313049378205092f41 Mon Sep 17 00:00:00 2001 From: stam Date: Thu, 16 Jan 2020 17:07:19 +0300 Subject: [PATCH 38/50] travis.ci --- .travis.yml | 57 ++++---- CHANGELOG.md | 6 + atlassian/bitbucket/latest/Dockerfile | 2 +- atlassian/bitbucket/latest/Dockerfile.jdk11 | 45 ++++++ .../confluence/7.0.5/.docker-repository.yml | 1 + atlassian/confluence/7.0.5/.dockerignore | 3 + atlassian/confluence/7.0.5/Dockerfile | 46 ++++++ atlassian/confluence/7.0.5/Makefile | 4 + atlassian/confluence/7.0.5/README.md | 131 ++++++++++++++++++ atlassian/confluence/7.0.5/entrypoint.sh | 39 ++++++ atlassian/confluence/7.1.0/Dockerfile | 2 +- atlassian/confluence/7.1.0/Dockerfile.jdk11 | 46 ++++++ atlassian/confluence/7.1.1/Dockerfile | 2 +- atlassian/confluence/7.1.1/Dockerfile.jdk11 | 46 ++++++ atlassian/confluence/7.1.2/Dockerfile | 2 +- atlassian/confluence/7.1.2/Dockerfile.jdk11 | 46 ++++++ atlassian/confluence/7.2.0/Dockerfile | 2 +- atlassian/confluence/7.2.0/Dockerfile.jdk11 | 46 ++++++ .../confluence/7.2.1/.docker-repository.yml | 1 + atlassian/confluence/7.2.1/.dockerignore | 3 + atlassian/confluence/7.2.1/Dockerfile | 46 ++++++ atlassian/confluence/7.2.1/Dockerfile.jdk11 | 46 ++++++ atlassian/confluence/7.2.1/Makefile | 5 + atlassian/confluence/7.2.1/README.md | 131 ++++++++++++++++++ atlassian/confluence/7.2.1/entrypoint.sh | 39 ++++++ atlassian/confluence/latest/Dockerfile | 4 +- atlassian/confluence/latest/Dockerfile.jdk11 | 46 ++++++ atlassian/jira/latest/Dockerfile | 2 +- atlassian/jira/latest/Dockerfile.jdk11 | 47 +++++++ 29 files changed, 860 insertions(+), 36 deletions(-) create mode 100644 atlassian/bitbucket/latest/Dockerfile.jdk11 create mode 100644 atlassian/confluence/7.0.5/.docker-repository.yml create mode 100644 atlassian/confluence/7.0.5/.dockerignore create mode 100644 atlassian/confluence/7.0.5/Dockerfile create mode 100644 atlassian/confluence/7.0.5/Makefile create mode 100644 atlassian/confluence/7.0.5/README.md create mode 100644 atlassian/confluence/7.0.5/entrypoint.sh create mode 100644 atlassian/confluence/7.1.0/Dockerfile.jdk11 create mode 100644 atlassian/confluence/7.1.1/Dockerfile.jdk11 create mode 100644 atlassian/confluence/7.1.2/Dockerfile.jdk11 create mode 100644 atlassian/confluence/7.2.0/Dockerfile.jdk11 create mode 100644 atlassian/confluence/7.2.1/.docker-repository.yml create mode 100644 atlassian/confluence/7.2.1/.dockerignore create mode 100644 atlassian/confluence/7.2.1/Dockerfile create mode 100644 atlassian/confluence/7.2.1/Dockerfile.jdk11 create mode 100644 atlassian/confluence/7.2.1/Makefile create mode 100644 atlassian/confluence/7.2.1/README.md create mode 100644 atlassian/confluence/7.2.1/entrypoint.sh create mode 100644 atlassian/confluence/latest/Dockerfile.jdk11 create mode 100644 atlassian/jira/latest/Dockerfile.jdk11 diff --git a/.travis.yml b/.travis.yml index 5bc109d0b..1b149ff0b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -123,18 +123,24 @@ matrix: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/bitbucket:latest atlassian/bitbucket/latest - docker push epicmorg/bitbucket:latest + - docker build --compress -t epicmorg/bitbucket:latest-jdk11 -f atlassian/bitbucket/latest/Dockerfile.jdk11 atlassian/bitbucket/latest + - docker push epicmorg/bitbucket:latest-jdk11 - name: Confluence (latest) script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/confluence:latest atlassian/confluence/latest - docker push epicmorg/confluence:latest + - docker build --compress -t epicmorg/confluence:latest-jdk11 -f atlassian/confluence/latest/Dockerfile.jdk11 atlassian/confluence/latest + - docker push epicmorg/confluence:latest-jdk11 - name: Jira (latest) script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:latest atlassian/jira/latest - docker push epicmorg/jira:latest + - docker build --compress -t epicmorg/jira:latest-jdk11 -f atlassian/jira/latest/Dockerfile.jdk11 atlassian/jira/latest + - docker push epicmorg/jira:latest-jdk11 - name: qBitTorrent - latest script: @@ -928,32 +934,23 @@ matrix: ########## - - name: Confluence 7.0.1 + - name: Confluence 7.0.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/confluence:7.0.1 atlassian/confluence/7.0.1 - docker push epicmorg/confluence:7.0.1 - - - - name: Confluence 7.0.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:7.0.2 atlassian/confluence/7.0.2 - docker push epicmorg/confluence:7.0.2 - - - - name: Confluence 7.0.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:7.0.3 atlassian/confluence/7.0.3 - docker push epicmorg/confluence:7.0.3 - - - - name: Confluence 7.0.4 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:7.0.4 atlassian/confluence/7.0.4 - docker push epicmorg/confluence:7.0.4 + + - docker build --compress -t epicmorg/confluence:7.0.5 atlassian/confluence/7.0.5 + - docker push epicmorg/confluence:7.0.5 ########## @@ -962,29 +959,33 @@ matrix: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/confluence:7.1.0 atlassian/confluence/7.1.0 - docker push epicmorg/confluence:7.1.0 - - - - name: Confluence 7.1.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:7.1.0-jdk11 -f /atlassian/confluence/7.1.0/Dockerfile.jdk11 atlassian/confluence/7.1.0 + - docker push epicmorg/confluence:7.1.0-jdk11 + - docker build --compress -t epicmorg/confluence:7.1.1 atlassian/confluence/7.1.1 - docker push epicmorg/confluence:7.1.1 - - - - name: Confluence 7.1.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:7.1.1-jdk11 -f /atlassian/confluence/7.1.1/Dockerfile.jdk11 atlassian/confluence/7.1.1 + - docker push epicmorg/confluence:7.1.1-jdk11 + - docker build --compress -t epicmorg/confluence:7.1.2 atlassian/confluence/7.1.2 - docker push epicmorg/confluence:7.1.2 + - docker build --compress -t epicmorg/confluence:7.1.2-jdk11 -f /atlassian/confluence/7.1.2/Dockerfile.jdk11 atlassian/confluence/7.1.2 + - docker push epicmorg/confluence:7.1.2-jdk11 ########## - - name: Confluence 7.2.0 + - name: Confluence 7.2.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/confluence:7.2.0 atlassian/confluence/7.2.0 - docker push epicmorg/confluence:7.2.0 - + - docker build --compress -t epicmorg/confluence:7.2.0-jdk11 -f /atlassian/confluence/7.2.0/Dockerfile.jdk11 atlassian/confluence/7.2.0 + - docker push epicmorg/confluence:7.2.0-jdk11 + + - docker build --compress -t epicmorg/confluence:7.2.1 atlassian/confluence/7.2.0 + - docker push epicmorg/confluence:7.2.1 + - docker build --compress -t epicmorg/confluence:7.2.1-jdk11 -f /atlassian/confluence/7.2.1/Dockerfile.jdk11 atlassian/confluence/7.2.1 + - docker push epicmorg/confluence:7.2.1-jdk11 ######################################### #### Our Jira images diff --git a/CHANGELOG.md b/CHANGELOG.md index c206cd319..3b52734e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,6 +41,12 @@ * added `Confluence 6.8.x`: `6.8.0`, `6.8.1`, `6.8.2`, `6.8.3`, `6.8.5` * added `Confluence 6.10.x`: `6.10.3` * added `Confluence 6.13.x`: `6.10.5`, `6.10.6`, `6.10.7`, `6.10.8`, `6.10.9`, `6.10.10`, + * added `Confluence 6.13.x`: `6.15.10` + * added `Confluence 7.0.x`: `7.0.5` + * added `Confluence 7.2.x`: `7.2.1` + * `Atlassian` stack separated to 2 branches: + * jdk8-based (default for all images) + * jdk11-based for new images (by special `-jdk11` tag) * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/bitbucket/latest/Dockerfile b/atlassian/bitbucket/latest/Dockerfile index 053caa0ff..e4dd232d7 100644 --- a/atlassian/bitbucket/latest/Dockerfile +++ b/atlassian/bitbucket/latest/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/latest/Dockerfile.jdk11 b/atlassian/bitbucket/latest/Dockerfile.jdk11 new file mode 100644 index 000000000..053caa0ff --- /dev/null +++ b/atlassian/bitbucket/latest/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.10.0 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/7.0.5/.docker-repository.yml b/atlassian/confluence/7.0.5/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/7.0.5/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/7.0.5/.dockerignore b/atlassian/confluence/7.0.5/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/7.0.5/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/7.0.5/Dockerfile b/atlassian/confluence/7.0.5/Dockerfile new file mode 100644 index 000000000..e122788e8 --- /dev/null +++ b/atlassian/confluence/7.0.5/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=7.0.5 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/7.0.5/Makefile b/atlassian/confluence/7.0.5/Makefile new file mode 100644 index 000000000..2514422b3 --- /dev/null +++ b/atlassian/confluence/7.0.5/Makefile @@ -0,0 +1,4 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:7.0.5 . diff --git a/atlassian/confluence/7.0.5/README.md b/atlassian/confluence/7.0.5/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/7.0.5/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/7.0.5/entrypoint.sh b/atlassian/confluence/7.0.5/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/7.0.5/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/7.1.0/Dockerfile b/atlassian/confluence/7.1.0/Dockerfile index 66b1b2b9a..56ca2c723 100644 --- a/atlassian/confluence/7.1.0/Dockerfile +++ b/atlassian/confluence/7.1.0/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/confluence/7.1.0/Dockerfile.jdk11 b/atlassian/confluence/7.1.0/Dockerfile.jdk11 new file mode 100644 index 000000000..66b1b2b9a --- /dev/null +++ b/atlassian/confluence/7.1.0/Dockerfile.jdk11 @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=7.1.0 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/7.1.1/Dockerfile b/atlassian/confluence/7.1.1/Dockerfile index 3cc9ae29e..1679524bd 100644 --- a/atlassian/confluence/7.1.1/Dockerfile +++ b/atlassian/confluence/7.1.1/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/confluence/7.1.1/Dockerfile.jdk11 b/atlassian/confluence/7.1.1/Dockerfile.jdk11 new file mode 100644 index 000000000..3cc9ae29e --- /dev/null +++ b/atlassian/confluence/7.1.1/Dockerfile.jdk11 @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=7.1.1 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/7.1.2/Dockerfile b/atlassian/confluence/7.1.2/Dockerfile index d8dd674c6..0e8a2b0a2 100644 --- a/atlassian/confluence/7.1.2/Dockerfile +++ b/atlassian/confluence/7.1.2/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/confluence/7.1.2/Dockerfile.jdk11 b/atlassian/confluence/7.1.2/Dockerfile.jdk11 new file mode 100644 index 000000000..d8dd674c6 --- /dev/null +++ b/atlassian/confluence/7.1.2/Dockerfile.jdk11 @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=7.1.2 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/7.2.0/Dockerfile b/atlassian/confluence/7.2.0/Dockerfile index 4f7c7881c..54a8caac8 100644 --- a/atlassian/confluence/7.2.0/Dockerfile +++ b/atlassian/confluence/7.2.0/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/confluence/7.2.0/Dockerfile.jdk11 b/atlassian/confluence/7.2.0/Dockerfile.jdk11 new file mode 100644 index 000000000..4f7c7881c --- /dev/null +++ b/atlassian/confluence/7.2.0/Dockerfile.jdk11 @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=7.2.0 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/7.2.1/.docker-repository.yml b/atlassian/confluence/7.2.1/.docker-repository.yml new file mode 100644 index 000000000..efb9f8b2d --- /dev/null +++ b/atlassian/confluence/7.2.1/.docker-repository.yml @@ -0,0 +1 @@ +repository: epicmorg/confluence diff --git a/atlassian/confluence/7.2.1/.dockerignore b/atlassian/confluence/7.2.1/.dockerignore new file mode 100644 index 000000000..99176b278 --- /dev/null +++ b/atlassian/confluence/7.2.1/.dockerignore @@ -0,0 +1,3 @@ +.git +scripts +.idea \ No newline at end of file diff --git a/atlassian/confluence/7.2.1/Dockerfile b/atlassian/confluence/7.2.1/Dockerfile new file mode 100644 index 000000000..107b68b3b --- /dev/null +++ b/atlassian/confluence/7.2.1/Dockerfile @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk8 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=7.2.1 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/7.2.1/Dockerfile.jdk11 b/atlassian/confluence/7.2.1/Dockerfile.jdk11 new file mode 100644 index 000000000..3aee00b73 --- /dev/null +++ b/atlassian/confluence/7.2.1/Dockerfile.jdk11 @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=7.2.1 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/confluence/7.2.1/Makefile b/atlassian/confluence/7.2.1/Makefile new file mode 100644 index 000000000..7833900ff --- /dev/null +++ b/atlassian/confluence/7.2.1/Makefile @@ -0,0 +1,5 @@ +all: confl + +confl: + docker build --compress -t epicmorg/confluence:7.2.1 . + docker push epicmorg/confluence:7.2.1 diff --git a/atlassian/confluence/7.2.1/README.md b/atlassian/confluence/7.2.1/README.md new file mode 100644 index 000000000..7e5b92f37 --- /dev/null +++ b/atlassian/confluence/7.2.1/README.md @@ -0,0 +1,131 @@ +![Atlassian Confluence Server](https://www.atlassian.com/dam/wac/legacy/confluence_logo_landing.png) + +Confluence Server is where you create, organise and discuss work with your team. Capture the knowledge that's too often lost in email inboxes and shared network drives in Confluence – where it's easy to find, use, and update. Give every team, project, or department its own space to create the things they need, whether it's meeting notes, product requirements, file lists, or project plans, you can get more done in Confluence. + +Learn more about Confluence Server: + +You can find the repository for this Dockerfile at + +# Overview + +This Docker container makes it easy to get an instance of Confluence up and running. + +# Quick Start + +For the directory in the environmental variable `CONFLUENCE_HOME` that is used to store Confluence data +(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume): + +Start Atlassian Confluence Server: + + $> docker run -v /data/your-confluence-home:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +**Success**. Confluence is now available on [http://localhost:8090](http://localhost:8090)* + +Please ensure your container has the necessary resources allocated to it. +We recommend 2GiB of memory allocated to accommodate the application server. +See [Supported Platforms](https://confluence.atlassian.com/display/DOC/Supported+platforms) for further information. + + +_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):8090` instead._ + +## Memory / Heap Size + +If you need to override Confluence Server's default memory allocation, you can control the minimum heap (Xms) and maximum heap (Xmx) via the below environment variables. + +* `JVM_MINIMUM_MEMORY` (default: 1024m) + + The minimum heap size of the JVM + +* `JVM_MAXIMUM_MEMORY` (default: 1024m) + + The maximum heap size of the JVM + +## Reverse Proxy Settings + +If Confluence is run behind a reverse proxy server, then you need to specify extra options to make Confluence aware of the setup. They can be controlled via the below environment variables. + +* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) + + The reverse proxy's fully qualified hostname. + +* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) + + The reverse proxy's port number via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SCHEME` (default: http) + + The protocol via which Confluence is accessed. + +* `CATALINA_CONNECTOR_SECURE` (default: false) + + Set 'true' if CATALINA_CONNECTOR_SCHEME is 'https'. + +## JVM configuration + +If you need to pass additional JVM arguments to Confluence such as specifying a custom trust store, you can add them via the below environment variable + +* `JVM_SUPPORT_RECOMMENDED_ARGS` + + Additional JVM arguments for Confluence + +Example: + + $> docker run -e JVM_SUPPORT_RECOMMENDED_ARGS=-Djavax.net.ssl.trustStore=/var/atlassian/application-data/confluence/cacerts -v confluenceVolume:/var/atlassian/application-data/confluence --name="confluence" -d -p 8090:8090 -p 8091:8091 epicmorg/confluence + + +# Upgrade + +To upgrade to a more recent version of Confluence Server you can simply stop the `Confluence` +container and start a new one based on a more recent image: + + $> docker stop confluence + $> docker rm confluence + $> docker run ... (see above) + +As your data is stored in the data volume directory on the host, it will still +be available after the upgrade. + +_Note: Please make sure that you **don't** accidentally remove the `confluence` +container and its volumes using the `-v` option._ + +# Backup + +For evaluating Confluence you can use the built-in database that will store its files in the Confluence Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/your-confluence-home` in the example above). + +Confluence's [automatic backup](https://confluence.atlassian.com/display/DOC/Configuring+Backups) is currently supported in the Docker setup. You can also use the [Production Backup Strategy](https://confluence.atlassian.com/display/DOC/Production+Backup+Strategy) approach if you're using an external database. + +Read more about data recovery and backups: [Site Backup and Restore](https://confluence.atlassian.com/display/DOC/Site+Backup+and+Restore) + +# Versioning + +The `latest` tag matches the most recent release of Atlassian Confluence Server. +So `epicmorg/confluence:latest` will use the newest stable version of Confluence Server available. + +Alternatively, you can use a specific minor version of Confluence Server by using a version number +tag: `epicmorg/confluence:5.10.8`. This will install the latest `5.10.8` version that +is available. + +## Versions available + +* `epicmorg/confluence:latest` +* `epicmorg/confluence:5.6.4` +* `epicmorg/confluence:5.10.8` + +# Known Problems +In Mac OS X with Docker version 1.11.0, when running with docker-machine, there is a bug where the directory specified for `CONFLUENCE_HOME` in a volume mount will not have the correct permission, and thus startup fails with a permission denied error: + Error writing state to confluence.cfg.xml +com.atlassian.config.ConfigurationException: Couldn't save confluence.cfg.xml to /var/atlassian/confluence-home directory. + +See https://github.com/docker/docker/issues/4023 for details. + +To work around this issue, use a different host operating system other than Mac OSX until a newer release of Docker fixes this issue. + +# Support + +This Docker image is great for evaluating Confluence. However, it does not use an Oracle JDK due to licensing constraints. Instead, it uses OpenJDK which is not supported for running Confluence in production. + +To meet our supported platform requirements, you'll need to build your own image based on [Oracle JDK](https://github.com/oracle/docker-images/tree/master/OracleJDK). See [Update the Confluence Docker image to use Oracle JDK ](https://confluence.atlassian.com/display/CONFKB/Update+the+Confluence+Docker+image+to+use+Oracle+JDK) for more info. + +For product support go to [support.atlassian.com](http://support.atlassian.com). + diff --git a/atlassian/confluence/7.2.1/entrypoint.sh b/atlassian/confluence/7.2.1/entrypoint.sh new file mode 100644 index 000000000..250fc031a --- /dev/null +++ b/atlassian/confluence/7.2.1/entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -euo pipefail + +export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") +export JRE_HOME="$JAVA_HOME/jre" +export JAVA_BINARY="$JRE_HOME/bin/java" +export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') + + +# Setup Catalina Opts +: ${CATALINA_CONNECTOR_PROXYNAME:=} +: ${CATALINA_CONNECTOR_PROXYPORT:=} +: ${CATALINA_CONNECTOR_SCHEME:=http} +: ${CATALINA_CONNECTOR_SECURE:=false} + +: ${CATALINA_OPTS:=} + +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" +CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" + +export CATALINA_OPTS + + +# Start Confluence as the correct user +if [ "${UID}" -eq 0 ]; then + echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" + PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${CONFLUENCE_HOME}") + EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 + if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then + chmod -R 700 "${CONFLUENCE_HOME}" && + chown -R "${RUN_USER}:${RUN_GROUP}" "${CONFLUENCE_HOME}" + fi + # Now drop privileges + exec su -s /bin/bash "${RUN_USER}" -c "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh $@" +else + exec "$CONFLUENCE_INSTALL_DIR/bin/start-confluence.sh" "$@" +fi diff --git a/atlassian/confluence/latest/Dockerfile b/atlassian/confluence/latest/Dockerfile index 4f7c7881c..107b68b3b 100644 --- a/atlassian/confluence/latest/Dockerfile +++ b/atlassian/confluence/latest/Dockerfile @@ -1,11 +1,11 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive ################################################################## # ARGuments ################################################################## -ARG CONFLUENCE_VERSION=7.2.0 +ARG CONFLUENCE_VERSION=7.2.1 ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz ################################################################## diff --git a/atlassian/confluence/latest/Dockerfile.jdk11 b/atlassian/confluence/latest/Dockerfile.jdk11 new file mode 100644 index 000000000..3aee00b73 --- /dev/null +++ b/atlassian/confluence/latest/Dockerfile.jdk11 @@ -0,0 +1,46 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG CONFLUENCE_VERSION=7.2.1 +ARG DOWNLOAD_URL=http://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-${CONFLUENCE_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/doc/confluence-home-and-other-important-directories-590259707.html +ENV CONFLUENCE_HOME /var/atlassian/application-data/confluence +ENV CONFLUENCE_INSTALL_DIR /opt/atlassian/confluence + +VOLUME ["${CONFLUENCE_HOME}"] +WORKDIR $CONFLUENCE_HOME + +# Expose HTTP and Synchrony ports +EXPOSE 8090 +EXPOSE 8091 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${CONFLUENCE_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$CONFLUENCE_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${CONFLUENCE_INSTALL_DIR}/ \ + && sed -i -e 's/-Xms\([0-9]\+[kmg]\) -Xmx\([0-9]\+[kmg]\)/-Xms\${JVM_MINIMUM_MEMORY:=\1} -Xmx\${JVM_MAXIMUM_MEMORY:=\2} \${JVM_SUPPORT_RECOMMENDED_ARGS} -Dconfluence.home=\${CONFLUENCE_HOME}/g' ${CONFLUENCE_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/port="8090"/port="8090" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${CONFLUENCE_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/latest/Dockerfile b/atlassian/jira/latest/Dockerfile index 6902e4045..947578d9a 100644 --- a/atlassian/jira/latest/Dockerfile +++ b/atlassian/jira/latest/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/jira/latest/Dockerfile.jdk11 b/atlassian/jira/latest/Dockerfile.jdk11 new file mode 100644 index 000000000..6902e4045 --- /dev/null +++ b/atlassian/jira/latest/Dockerfile.jdk11 @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=8.6.1 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp From b454de86e20bf6acbc26eca370d34a561bc04efa Mon Sep 17 00:00:00 2001 From: stam Date: Thu, 16 Jan 2020 17:23:36 +0300 Subject: [PATCH 39/50] travis.ci --- .travis.yml | 1013 +++++++++++++-------------------------------------- 1 file changed, 260 insertions(+), 753 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1b149ff0b..fb80d0eee 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,36 +12,43 @@ matrix: ######################################### #### Forked and fixed images ######################################### - - name: Zabbix Agent + - name: Zabbix [Agent + Java Gateway + Server with MySQL + Web Apache2 with MySQL] script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/zabbix-agent:latest zabbix/agent - docker push epicmorg/zabbix-agent:latest - - - name: Zabbix Java Gateway - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/zabbix-java-gateway:latest zabbix/java-gateway - docker push epicmorg/zabbix-java-gateway:latest - - - name: Zabbix Server with MySQL - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/zabbix-server-mysql:latest zabbix/server - docker push epicmorg/zabbix-server-mysql:latest - - - name: Zabbix web Apache2 with MySQL - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/zabbix-web-apache-mysql:latest zabbix/web - docker push epicmorg/zabbix-web-apache-mysql:latest +########## + - name: NextCloud (latest) script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/nextcloud:latest nextcloud - docker push epicmorg/nextcloud:latest + +########## + - name: qBitTorrent [latest + unstable + stable] + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/qbittorrent:latest qbittorrent/latest + - docker push epicmorg/qbittorrent:latest + + - docker build --compress -t epicmorg/qbittorrent:unstable qbittorrent/latest + - docker push epicmorg/qbittorrent:unstable + + - docker build --compress -t epicmorg/qbittorrent:stable qbittorrent/stable + - docker push epicmorg/qbittorrent:stable + ######################################### #### Our High priority images ######################################### @@ -52,42 +59,34 @@ matrix: # - docker build --compress -t user/repo:tag path/to/folder/contains/dockerfile # - docker push user/repo:tag - - name: Base Production + - name: Base Production + JDK 8 + JDK 11 script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/prod:latest epicmorg/prod/main - docker push epicmorg/prod:latest - - - name: Base Production + JDK 8 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/prod:jdk8 epicmorg/prod/jdk8 - docker push epicmorg/prod:jdk8 - - - name: Base Production + JDK 11 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/prod:jdk11 epicmorg/prod/jdk11 - docker push epicmorg/prod:jdk11 - - name: Base Develop +########## + + - name: Base Develop + JDK 8 + JDK 11 script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/devel:latest epicmorg/devel/main - docker push epicmorg/devel:latest - - - name: Base Develop + JDK 8 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/devel:jdk8 epicmorg/devel/jdk8 - docker push epicmorg/devel:jdk8 - - - name: Base Develop + JDK 11 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/devel:jdk11 epicmorg/devel/jdk11 - docker push epicmorg/devel:jdk11 +########## + - name: TeamCity Agent script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin @@ -106,6 +105,8 @@ matrix: - docker build --compress -t epicmorg/balancer:php balancer/php - docker push epicmorg/balancer:php +########## + - name: Apache + PHP7.3 script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin @@ -118,6 +119,8 @@ matrix: - docker build --compress -t epicmorg/websites:php7.2 websites/php7.2 - docker push epicmorg/websites:php7.2 +########## + - name: Bitbucket (latest) script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin @@ -142,391 +145,238 @@ matrix: - docker build --compress -t epicmorg/jira:latest-jdk11 -f atlassian/jira/latest/Dockerfile.jdk11 atlassian/jira/latest - docker push epicmorg/jira:latest-jdk11 - - name: qBitTorrent - latest - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - - docker build --compress -t epicmorg/qbittorrent:latest qbittorrent/latest - - docker push epicmorg/qbittorrent:latest - ######################################### #### Our Bitbucket images ######################################### - - name: Bitbucket 6.0.0 + - name: Bitbucket 6.0.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/bitbucket:6.0.0 atlassian/bitbucket/6.0.0 - docker push epicmorg/bitbucket:6.0.0 - - - name: Bitbucket 6.0.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.0.1 atlassian/bitbucket/6.0.1 - - docker push epicmorg/bitbucket:6.0.1 - - - name: Bitbucket 6.0.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker push epicmorg/bitbucket:6.0.1 + - docker build --compress -t epicmorg/bitbucket:6.0.2 atlassian/bitbucket/6.0.2 - docker push epicmorg/bitbucket:6.0.2 - - - name: Bitbucket 6.0.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.0.3 atlassian/bitbucket/6.0.3 - docker push epicmorg/bitbucket:6.0.3 - - - name: Bitbucket 6.0.4 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.0.4 atlassian/bitbucket/6.0.4 - docker push epicmorg/bitbucket:6.0.4 - - - name: Bitbucket 6.0.5 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.0.5 atlassian/bitbucket/6.0.5 - docker push epicmorg/bitbucket:6.0.5 - - - name: Bitbucket 6.0.6 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.0.6 atlassian/bitbucket/6.0.6 - docker push epicmorg/bitbucket:6.0.6 - - - name: Bitbucket 6.0.7 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.0.7 atlassian/bitbucket/6.0.7 - docker push epicmorg/bitbucket:6.0.7 - - - name: Bitbucket 6.0.8 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.0.8 atlassian/bitbucket/6.0.8 - docker push epicmorg/bitbucket:6.0.8 - - - name: Bitbucket 6.0.9 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.0.9 atlassian/bitbucket/6.0.9 - docker push epicmorg/bitbucket:6.0.9 - - - name: Bitbucket 6.0.10 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.0.10 atlassian/bitbucket/6.0.10 - docker push epicmorg/bitbucket:6.0.10 - - - name: Bitbucket 6.0.11 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.0.11 atlassian/bitbucket/6.0.11 - docker push epicmorg/bitbucket:6.0.11 ########## - - name: Bitbucket 6.1.0 + - name: Bitbucket 6.1.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/bitbucket:6.1.0 atlassian/bitbucket/6.1.0 - docker push epicmorg/bitbucket:6.1.0 - - - name: Bitbucket 6.1.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.1.1 atlassian/bitbucket/6.1.1 - docker push epicmorg/bitbucket:6.1.1 - - - name: Bitbucket 6.1.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.1.2 atlassian/bitbucket/6.1.2 - docker push epicmorg/bitbucket:6.1.2 - - - name: Bitbucket 6.1.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.1.3 atlassian/bitbucket/6.1.3 - docker push epicmorg/bitbucket:6.1.3 - - - name: Bitbucket 6.1.4 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.1.4 atlassian/bitbucket/6.1.4 - docker push epicmorg/bitbucket:6.1.4 - - - name: Bitbucket 6.1.5 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.1.5 atlassian/bitbucket/6.1.5 - docker push epicmorg/bitbucket:6.1.5 - - - name: Bitbucket 6.1.6 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.1.6 atlassian/bitbucket/6.1.6 - docker push epicmorg/bitbucket:6.1.6 - - - name: Bitbucket 6.1.7 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.1.7 atlassian/bitbucket/6.1.7 - docker push epicmorg/bitbucket:6.1.7 - - - name: Bitbucket 6.1.8 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.1.8 atlassian/bitbucket/6.1.8 - docker push epicmorg/bitbucket:6.1.8 - - - name: Bitbucket 6.1.9 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.1.9 atlassian/bitbucket/6.1.9 - docker push epicmorg/bitbucket:6.1.9 ########## - - name: Bitbucket 6.2.0 + - name: Bitbucket 6.2.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/bitbucket:6.2.0 atlassian/bitbucket/6.2.0 - docker push epicmorg/bitbucket:6.2.0 - - - name: Bitbucket 6.2.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.2.1 atlassian/bitbucket/6.2.1 - docker push epicmorg/bitbucket:6.2.1 - - - name: Bitbucket 6.2.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.2.2 atlassian/bitbucket/6.2.2 - docker push epicmorg/bitbucket:6.2.2 - - - name: Bitbucket 6.2.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.2.3 atlassian/bitbucket/6.2.3 - docker push epicmorg/bitbucket:6.2.3 - - - name: Bitbucket 6.2.4 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.2.4 atlassian/bitbucket/6.2.4 - docker push epicmorg/bitbucket:6.2.4 - - - name: Bitbucket 6.2.5 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.2.5 atlassian/bitbucket/6.2.5 - docker push epicmorg/bitbucket:6.2.5 - - - name: Bitbucket 6.2.6 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.2.6 atlassian/bitbucket/6.2.6 - docker push epicmorg/bitbucket:6.2.6 - - - name: Bitbucket 6.2.7 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.2.7 atlassian/bitbucket/6.2.7 - docker push epicmorg/bitbucket:6.2.7 ########## - - name: Bitbucket 6.3.0 + - name: Bitbucket 6.3.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/bitbucket:6.3.0 atlassian/bitbucket/6.3.0 - docker push epicmorg/bitbucket:6.3.0 - - - name: Bitbucket 6.3.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.3.1 atlassian/bitbucket/6.3.1 - docker push epicmorg/bitbucket:6.3.1 - - - name: Bitbucket 6.3.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.3.2 atlassian/bitbucket/6.3.2 - docker push epicmorg/bitbucket:6.3.2 - - - name: Bitbucket 6.3.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.3.3 atlassian/bitbucket/6.3.3 - docker push epicmorg/bitbucket:6.3.3 - - - name: Bitbucket 6.3.4 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.3.4 atlassian/bitbucket/6.3.4 - docker push epicmorg/bitbucket:6.3.4 - - - name: Bitbucket 6.3.5 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.3.5 atlassian/bitbucket/6.3.5 - docker push epicmorg/bitbucket:6.3.5 - - - name: Bitbucket 6.3.6 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.3.6 atlassian/bitbucket/6.3.6 - docker push epicmorg/bitbucket:6.3.6 ########## - - name: Bitbucket 6.4.0 + - name: Bitbucket 6.4.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/bitbucket:6.4.0 atlassian/bitbucket/6.4.0 - docker push epicmorg/bitbucket:6.4.0 - - - name: Bitbucket 6.4.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.4.1 atlassian/bitbucket/6.4.1 - docker push epicmorg/bitbucket:6.4.1 - - - name: Bitbucket 6.4.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.4.2 atlassian/bitbucket/6.4.2 - docker push epicmorg/bitbucket:6.4.2 - - - name: Bitbucket 6.4.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.4.3 atlassian/bitbucket/6.4.3 - docker push epicmorg/bitbucket:6.4.3 - - - name: Bitbucket 6.4.4 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.4.4 atlassian/bitbucket/6.4.4 - docker push epicmorg/bitbucket:6.4.4 ########## - - name: Bitbucket 6.5.0 + - name: Bitbucket 6.5.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/bitbucket:6.5.0 atlassian/bitbucket/6.5.0 - docker push epicmorg/bitbucket:6.5.0 - - - name: Bitbucket 6.5.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.5.1 atlassian/bitbucket/6.5.1 - docker push epicmorg/bitbucket:6.5.1 - - - name: Bitbucket 6.5.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.5.2 atlassian/bitbucket/6.5.2 - docker push epicmorg/bitbucket:6.5.2 - - - name: Bitbucket 6.5.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.5.3 atlassian/bitbucket/6.5.3 - docker push epicmorg/bitbucket:6.5.3 ########## - - name: Bitbucket 6.6.0 + - name: Bitbucket 6.6.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/bitbucket:6.6.0 atlassian/bitbucket/6.6.0 - docker push epicmorg/bitbucket:6.6.0 - - - name: Bitbucket 6.6.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.6.1 atlassian/bitbucket/6.6.1 - docker push epicmorg/bitbucket:6.6.1 - - - name: Bitbucket 6.6.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.6.2 atlassian/bitbucket/6.6.2 - docker push epicmorg/bitbucket:6.6.2 - - - name: Bitbucket 6.6.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.6.3 atlassian/bitbucket/6.6.3 - docker push epicmorg/bitbucket:6.6.3 ########## - - name: Bitbucket 6.7.0 + - name: Bitbucket 6.7.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/bitbucket:6.7.0 atlassian/bitbucket/6.7.0 - docker push epicmorg/bitbucket:6.7.0 - - - name: Bitbucket 6.7.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.7.1 atlassian/bitbucket/6.7.1 - docker push epicmorg/bitbucket:6.7.1 - - - name: Bitbucket 6.7.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.7.2 atlassian/bitbucket/6.7.2 - docker push epicmorg/bitbucket:6.7.2 - - - name: Bitbucket 6.7.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.7.3 atlassian/bitbucket/6.7.3 - docker push epicmorg/bitbucket:6.7.3 ########## - - name: Bitbucket 6.8.0 + - name: Bitbucket 6.8.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/bitbucket:6.8.0 atlassian/bitbucket/6.8.0 - docker push epicmorg/bitbucket:6.8.0 - - - name: Bitbucket 6.8.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.8.1 atlassian/bitbucket/6.8.1 - docker push epicmorg/bitbucket:6.8.1 - - - name: Bitbucket 6.8.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.8.2 atlassian/bitbucket/6.8.2 - docker push epicmorg/bitbucket:6.8.2 ########## - - name: Bitbucket 6.9.0 + - name: Bitbucket 6.9.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/bitbucket:6.9.0 atlassian/bitbucket/6.9.0 - docker push epicmorg/bitbucket:6.9.0 - - - name: Bitbucket 6.9.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/bitbucket:6.9.1 atlassian/bitbucket/6.9.1 - docker push epicmorg/bitbucket:6.9.1 ########## - - name: Bitbucket 6.10.0 + - name: Bitbucket 6.10.x LTS script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/bitbucket:6.10.0 atlassian/bitbucket/6.10.0 @@ -752,21 +602,15 @@ matrix: ########## - - name: Confluence 6.9.0 + - name: Confluence 6.9.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/confluence:6.9.0 atlassian/confluence/6.9.0 - docker push epicmorg/confluence:6.9.0 - - - name: Confluence 6.9.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.9.1 atlassian/confluence/6.9.1 - docker push epicmorg/confluence:6.9.1 - - - name: Confluence 6.9.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.9.3 atlassian/confluence/6.9.3 - docker push epicmorg/confluence:6.9.3 @@ -789,53 +633,35 @@ matrix: ########## - - name: Confluence 6.11.0 + - name: Confluence 6.11.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/confluence:6.11.0 atlassian/confluence/6.11.0 - docker push epicmorg/confluence:6.11.0 - - - name: Confluence 6.11.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.11.1 atlassian/confluence/6.11.1 - docker push epicmorg/confluence:6.11.1 - - - name: Confluence 6.11.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.11.2 atlassian/confluence/6.11.2 - docker push epicmorg/confluence:6.11.2 ########## - - name: Confluence 6.12.0 + - name: Confluence 6.12.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/confluence:6.12.0 atlassian/confluence/6.12.0 - docker push epicmorg/confluence:6.12.0 - - - name: Confluence 6.12.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.12.1 atlassian/confluence/6.12.1 - docker push epicmorg/confluence:6.12.1 - - - name: Confluence 6.12.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.12.2 atlassian/confluence/6.12.2 - docker push epicmorg/confluence:6.12.2 - - - name: Confluence 6.12.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.12.3 atlassian/confluence/6.12.3 - docker push epicmorg/confluence:6.12.3 - - - name: Confluence 6.12.4 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.12.4 atlassian/confluence/6.12.4 - docker push epicmorg/confluence:6.12.4 @@ -879,27 +705,18 @@ matrix: ########## - - name: Confluence 6.14.0 + - name: Confluence 6.14.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/confluence:6.14.0 atlassian/confluence/6.14.0 - docker push epicmorg/confluence:6.14.0 - - - name: Confluence 6.14.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.14.1 atlassian/confluence/6.14.1 - docker push epicmorg/confluence:6.14.1 - - - name: Confluence 6.14.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.14.2 atlassian/confluence/6.14.2 - docker push epicmorg/confluence:6.14.2 - - - name: Confluence 6.14.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/confluence:6.14.3 atlassian/confluence/6.14.3 - docker push epicmorg/confluence:6.14.3 @@ -954,7 +771,7 @@ matrix: ########## - - name: Confluence 7.1.0 + - name: Confluence 7.1.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/confluence:7.1.0 atlassian/confluence/7.1.0 @@ -990,790 +807,490 @@ matrix: ######################################### #### Our Jira images ######################################### - - name: Jira 7.0.0 + - name: Jira 7.0.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:7.0.0 atlassian/jira/7.0.0 - docker push epicmorg/jira:7.0.0 - - - name: Jira 7.0.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.0.2 atlassian/jira/7.0.2 - docker push epicmorg/jira:7.0.2 - - - name: Jira 7.0.4 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.0.4 atlassian/jira/7.0.4 - docker push epicmorg/jira:7.0.4 - - - name: Jira 7.0.5 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.0.5 atlassian/jira/7.0.5 - docker push epicmorg/jira:7.0.5 - - - name: Jira 7.0.10 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.0.10 atlassian/jira/7.0.10 - docker push epicmorg/jira:7.0.10 - - - name: Jira 7.0.11 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.0.11 atlassian/jira/7.0.11 - docker push epicmorg/jira:7.0.11 ########## - - name: Jira 7.1.0 + - name: Jira 7.1.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:7.1.0 atlassian/jira/7.1.0 - docker push epicmorg/jira:7.1.0 - - - name: Jira 7.1.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.1.1 atlassian/jira/7.1.1 - docker push epicmorg/jira:7.1.1 - - - name: Jira 7.1.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.1.2 atlassian/jira/7.1.2 - docker push epicmorg/jira:7.1.2 - - - name: Jira 7.1.4 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.1.4 atlassian/jira/7.1.4 - docker push epicmorg/jira:7.1.4 - - - name: Jira 7.1.6 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.1.6 atlassian/jira/7.1.6 - docker push epicmorg/jira:7.1.6 - - - name: Jira 7.1.7 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.1.7 atlassian/jira/7.1.7 - docker push epicmorg/jira:7.1.7 - - - name: Jira 7.1.8 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.1.8 atlassian/jira/7.1.8 - docker push epicmorg/jira:7.1.8 - - - name: Jira 7.1.9 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.1.9 atlassian/jira/7.1.9 - docker push epicmorg/jira:7.1.9 - - - name: Jira 7.1.10 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.1.10 atlassian/jira/7.1.10 - docker push epicmorg/jira:7.1.10 ########## - - name: Jira 7.2.0 + - name: Jira 7.2.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:7.2.0 atlassian/jira/7.2.0 - docker push epicmorg/jira:7.2.0 - - - name: Jira 7.2.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.2.1 atlassian/jira/7.2.1 - docker push epicmorg/jira:7.2.1 - - - name: Jira 7.2.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.2.2 atlassian/jira/7.2.2 - docker push epicmorg/jira:7.2.2 - - - name: Jira 7.2.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.2.3 atlassian/jira/7.2.3 - docker push epicmorg/jira:7.2.3 - - - name: Jira 7.2.4 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.2.4 atlassian/jira/7.2.4 - docker push epicmorg/jira:7.2.4 - - - name: Jira 7.2.6 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.2.6 atlassian/jira/7.2.6 - docker push epicmorg/jira:7.2.6 - - - name: Jira 7.2.7 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.2.7 atlassian/jira/7.2.7 - docker push epicmorg/jira:7.2.7 - - - name: Jira 7.2.8 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.2.8 atlassian/jira/7.2.8 - docker push epicmorg/jira:7.2.8 - - - name: Jira 7.2.9 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.2.9 atlassian/jira/7.2.9 - docker push epicmorg/jira:7.2.9 - - - name: Jira 7.2.10 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.2.10 atlassian/jira/7.2.10 - docker push epicmorg/jira:7.2.10 - - - name: Jira 7.2.11 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.2.11 atlassian/jira/7.2.11 - docker push epicmorg/jira:7.2.11 - - - name: Jira 7.2.12 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.2.12 atlassian/jira/7.2.12 - docker push epicmorg/jira:7.2.12 - - - name: Jira 7.2.13 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.2.13 atlassian/jira/7.2.13 - docker push epicmorg/jira:7.2.13 - - - name: Jira 7.2.14 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.2.14 atlassian/jira/7.2.14 - docker push epicmorg/jira:7.2.14 - - - name: Jira 7.2.15 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.2.15 atlassian/jira/7.2.15 - docker push epicmorg/jira:7.2.15 ########## - - name: Jira 7.3.0 + - name: Jira 7.3.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:7.3.0 atlassian/jira/7.3.0 - docker push epicmorg/jira:7.3.0 - - - name: Jira 7.3.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.3.1 atlassian/jira/7.3.1 - docker push epicmorg/jira:7.3.1 - - - name: Jira 7.3.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.3.2 atlassian/jira/7.3.2 - docker push epicmorg/jira:7.3.2 - - - name: Jira 7.3.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.3.3 atlassian/jira/7.3.3 - docker push epicmorg/jira:7.3.3 - - - name: Jira 7.3.4 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.3.4 atlassian/jira/7.3.4 - docker push epicmorg/jira:7.3.4 - - - name: Jira 7.3.5 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.3.5 atlassian/jira/7.3.5 - docker push epicmorg/jira:7.3.5 - - - name: Jira 7.3.6 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.3.6 atlassian/jira/7.3.6 - docker push epicmorg/jira:7.3.6 - - - name: Jira 7.3.7 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.3.7 atlassian/jira/7.3.7 - docker push epicmorg/jira:7.3.7 - - - name: Jira 7.3.8 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.3.8 atlassian/jira/7.3.8 - docker push epicmorg/jira:7.3.8 - - - name: Jira 7.3.9 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.3.9 atlassian/jira/7.3.9 - docker push epicmorg/jira:7.3.9 ########## - - name: Jira 7.4.0 + - name: Jira 7.4.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:7.4.0 atlassian/jira/7.4.0 - docker push epicmorg/jira:7.4.0 - - - name: Jira 7.4.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.4.1 atlassian/jira/7.4.1 - docker push epicmorg/jira:7.4.1 - - - name: Jira 7.4.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.4.2 atlassian/jira/7.4.2 - docker push epicmorg/jira:7.4.2 - - - name: Jira 7.4.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.4.3 atlassian/jira/7.4.3 - docker push epicmorg/jira:7.4.3 - - - name: Jira 7.4.4 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.4.4 atlassian/jira/7.4.4 - docker push epicmorg/jira:7.4.4 - - - name: Jira 7.4.5 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.4.5 atlassian/jira/7.4.5 - docker push epicmorg/jira:7.4.5 - - - name: Jira 7.4.6 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.4.6 atlassian/jira/7.4.6 - docker push epicmorg/jira:7.4.6 ########## - - name: Jira 7.5.0 + - name: Jira 7.5.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:7.5.0 atlassian/jira/7.5.0 - docker push epicmorg/jira:7.5.0 - - - name: Jira 7.5.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.5.1 atlassian/jira/7.5.1 - docker push epicmorg/jira:7.5.1 - - - name: Jira 7.5.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.5.2 atlassian/jira/7.5.2 - docker push epicmorg/jira:7.5.2 - - - name: Jira 7.5.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.5.3 atlassian/jira/7.5.3 - docker push epicmorg/jira:7.5.3 - - - name: Jira 7.5.4 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.5.4 atlassian/jira/7.5.4 - docker push epicmorg/jira:7.5.4 ########## - - name: Jira 7.6.0 + - name: Jira 7.6.x LTS script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:7.6.0 atlassian/jira/7.6.0 - docker push epicmorg/jira:7.6.0 - - - name: Jira 7.6.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.1 atlassian/jira/7.6.1 - docker push epicmorg/jira:7.6.1 - - - name: Jira 7.6.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.2 atlassian/jira/7.6.2 - docker push epicmorg/jira:7.6.2 - - - name: Jira 7.6.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.3 atlassian/jira/7.6.3 - docker push epicmorg/jira:7.6.3 - - - name: Jira 7.6.4 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.4 atlassian/jira/7.6.4 - docker push epicmorg/jira:7.6.4 - - - name: Jira 7.6.6 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.6 atlassian/jira/7.6.6 - docker push epicmorg/jira:7.6.6 - - - name: Jira 7.6.7 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.7 atlassian/jira/7.6.7 - docker push epicmorg/jira:7.6.7 - - - name: Jira 7.6.8 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.8 atlassian/jira/7.6.8 - docker push epicmorg/jira:7.6.8 - - - name: Jira 7.6.9 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.9 atlassian/jira/7.6.9 - docker push epicmorg/jira:7.6.9 - - - name: Jira 7.6.10 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.10 atlassian/jira/7.6.10 - docker push epicmorg/jira:7.6.10 - - - name: Jira 7.6.11 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.11 atlassian/jira/7.6.11 - docker push epicmorg/jira:7.6.11 - - - name: Jira 7.6.12 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.12 atlassian/jira/7.6.12 - docker push epicmorg/jira:7.6.12 - - - name: Jira 7.6.13 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.13 atlassian/jira/7.6.13 - docker push epicmorg/jira:7.6.13 - - - name: Jira 7.6.14 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.14 atlassian/jira/7.6.14 - docker push epicmorg/jira:7.6.14 - - - name: Jira 7.6.15 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.15 atlassian/jira/7.6.15 - docker push epicmorg/jira:7.6.15 - - - name: Jira 7.6.16 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.16 atlassian/jira/7.6.16 - docker push epicmorg/jira:7.6.16 - - - name: Jira 7.6.17 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.6.17 atlassian/jira/7.6.17 - docker push epicmorg/jira:7.6.17 ########## - - name: Jira 7.7.0 + - name: Jira 7.7.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:7.7.0 atlassian/jira/7.7.0 - docker push epicmorg/jira:7.7.0 - - - name: Jira 7.7.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.7.1 atlassian/jira/7.7.1 - docker push epicmorg/jira:7.7.1 - - - name: Jira 7.7.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.7.2 atlassian/jira/7.7.2 - docker push epicmorg/jira:7.7.2 - - - name: Jira 7.7.4 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.7.4 atlassian/jira/7.7.4 - docker push epicmorg/jira:7.7.4 ########## - - name: Jira 7.8.0 + - name: Jira 7.8.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:7.8.0 atlassian/jira/7.8.0 - docker push epicmorg/jira:7.8.0 - - - name: Jira 7.8.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.8.1 atlassian/jira/7.8.1 - docker push epicmorg/jira:7.8.1 - - - name: Jira 7.8.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.8.2 atlassian/jira/7.8.2 - docker push epicmorg/jira:7.8.2 - - - name: Jira 7.8.4 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.8.4 atlassian/jira/7.8.4 - docker push epicmorg/jira:7.8.4 ########## - - name: Jira 7.9.0 + - name: Jira 7.9.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:7.9.0 atlassian/jira/7.9.0 - docker push epicmorg/jira:7.9.0 - - - name: Jira 7.9.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.9.2 atlassian/jira/7.9.2 - docker push epicmorg/jira:7.9.2 ########## - - name: Jira 7.10.0 + + - name: Jira 7.10.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:7.10.0 atlassian/jira/7.10.0 - docker push epicmorg/jira:7.10.0 - - - name: Jira 7.10.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.10.1 atlassian/jira/7.10.1 - docker push epicmorg/jira:7.10.1 - - - name: Jira 7.10.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.10.2 atlassian/jira/7.10.2 - docker push epicmorg/jira:7.10.2 + +########## - - name: Jira 7.11.0 + - name: Jira 7.11.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:7.11.0 atlassian/jira/7.11.0 - docker push epicmorg/jira:7.11.0 - - - name: Jira 7.11.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.11.1 atlassian/jira/7.11.1 - docker push epicmorg/jira:7.11.1 - - - name: Jira 7.11.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.11.2 atlassian/jira/7.11.2 - docker push epicmorg/jira:7.11.2 - - name: Jira 7.12.0 +########## + + - name: Jira 7.12.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:7.12.0 atlassian/jira/7.12.0 - docker push epicmorg/jira:7.12.0 - - - name: Jira 7.12.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.12.1 atlassian/jira/7.12.1 - docker push epicmorg/jira:7.12.1 - - - name: Jira 7.12.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.12.3 atlassian/jira/7.12.3 - docker push epicmorg/jira:7.12.3 - - name: Jira 7.13.0 +########## + + - name: Jira 7.13.x LTS script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:7.13.0 atlassian/jira/7.13.0 - docker push epicmorg/jira:7.13.0 - - - name: Jira 7.13.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.13.1 atlassian/jira/7.13.1 - docker push epicmorg/jira:7.13.1 - - - name: Jira 7.13.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.13.2 atlassian/jira/7.13.2 - docker push epicmorg/jira:7.13.2 - - - name: Jira 7.13.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.13.3 atlassian/jira/7.13.3 - docker push epicmorg/jira:7.13.3 - - - name: Jira 7.13.4 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.13.4 atlassian/jira/7.13.4 - docker push epicmorg/jira:7.13.4 - - - name: Jira 7.13.5 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.13.5 atlassian/jira/7.13.5 - docker push epicmorg/jira:7.13.5 - - - name: Jira 7.13.6 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.13.6 atlassian/jira/7.13.6 - docker push epicmorg/jira:7.13.6 - - - name: Jira 7.13.8 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.13.8 atlassian/jira/7.13.8 - docker push epicmorg/jira:7.13.8 - - - name: Jira 7.13.9 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.13.9 atlassian/jira/7.13.9 - docker push epicmorg/jira:7.13.9 - - - name: Jira 7.13.11 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:7.13.11 atlassian/jira/7.13.11 - docker push epicmorg/jira:7.13.11 - - name: Jira 8.0.0 +########## + + - name: Jira 8.0.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:8.0.0 atlassian/jira/8.0.0 - docker push epicmorg/jira:8.0.0 - - - name: Jira 8.0.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:8.0.2 atlassian/jira/8.0.2 - docker push epicmorg/jira:8.0.2 - - - name: Jira 8.0.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:8.0.3 atlassian/jira/8.0.3 - docker push epicmorg/jira:8.0.3 - - name: Jira 8.1.0 +########## + + - name: Jira 8.1.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:8.1.0 atlassian/jira/8.1.0 - docker push epicmorg/jira:8.1.0 - - - name: Jira 8.1.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:8.1.1 atlassian/jira/8.1.1 - docker push epicmorg/jira:8.1.1 - - - name: Jira 8.1.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:8.1.2 atlassian/jira/8.1.2 - docker push epicmorg/jira:8.1.2 - - - name: Jira 8.1.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:8.1.3 atlassian/jira/8.1.3 - docker push epicmorg/jira:8.1.3 - - name: Jira 8.2.0 +########## + + - name: Jira 8.2.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:8.2.0 atlassian/jira/8.2.0 - docker push epicmorg/jira:8.2.0 - - - name: Jira 8.2.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:8.2.1 atlassian/jira/8.2.1 - docker push epicmorg/jira:8.2.1 - - - name: Jira 8.2.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:8.2.2 atlassian/jira/8.2.2 - docker push epicmorg/jira:8.2.2 - - - name: Jira 8.2.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:8.2.3 atlassian/jira/8.2.3 - docker push epicmorg/jira:8.2.3 - - - name: Jira 8.2.4 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:8.2.4 atlassian/jira/8.2.4 - docker push epicmorg/jira:8.2.4 - - - name: Jira 8.2.5 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:8.2.5 atlassian/jira/8.2.5 - docker push epicmorg/jira:8.2.5 - - - name: Jira 8.2.6 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:8.2.6 atlassian/jira/8.2.6 - docker push epicmorg/jira:8.2.6 - - name: Jira 8.3.0 +########## + + - name: Jira 8.3.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:8.3.0 atlassian/jira/8.3.0 - docker push epicmorg/jira:8.3.0 - - - name: Jira 8.3.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:8.3.1 atlassian/jira/8.3.1 - docker push epicmorg/jira:8.3.1 - - - name: Jira 8.3.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:8.3.2 atlassian/jira/8.3.2 - docker push epicmorg/jira:8.3.2 - - - name: Jira 8.3.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:8.3.3 atlassian/jira/8.3.3 - docker push epicmorg/jira:8.3.3 - - - name: Jira 8.3.4 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:8.3.4 atlassian/jira/8.3.4 - docker push epicmorg/jira:8.3.4 - - - name: Jira 8.3.5 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:8.3.5 atlassian/jira/8.3.5 - docker push epicmorg/jira:8.3.5 - - name: Jira 8.4.0 +########## + + - name: Jira 8.4.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:8.4.0 atlassian/jira/8.4.0 - docker push epicmorg/jira:8.4.0 - - - name: Jira 8.4.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:8.4.1 atlassian/jira/8.4.1 - docker push epicmorg/jira:8.4.1 - - - name: Jira 8.4.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:8.4.2 atlassian/jira/8.4.2 - docker push epicmorg/jira:8.4.2 - - - name: Jira 8.4.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:8.4.3 atlassian/jira/8.4.3 - docker push epicmorg/jira:8.4.3 - - name: Jira 8.5.0 +########## + + - name: Jira 8.5.x LTS script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:8.5.0 atlassian/jira/8.5.0 - docker push epicmorg/jira:8.5.0 - - - name: Jira 8.5.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:8.5.1 atlassian/jira/8.5.1 - docker push epicmorg/jira:8.5.1 - - - name: Jira 8.5.2 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:8.5.2 atlassian/jira/8.5.2 - docker push epicmorg/jira:8.5.2 - - - name: Jira 8.5.3 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:8.5.3 atlassian/jira/8.5.3 - docker push epicmorg/jira:8.5.3 - - name: Jira 8.6.0 +########## + + - name: Jira 8.6.x script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:8.6.0 atlassian/jira/8.6.0 - docker push epicmorg/jira:8.6.0 - - - name: Jira 8.6.1 - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/jira:8.6.1 atlassian/jira/8.6.1 - docker push epicmorg/jira:8.6.1 @@ -1781,14 +1298,4 @@ matrix: #### Our minor priority images ######################################### - - name: qBitTorrent - unstable - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - - docker build --compress -t epicmorg/qbittorrent:unstable qbittorrent/latest - - docker push epicmorg/qbittorrent:unstable - - name: qBitTorrent - stable - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - - docker build --compress -t epicmorg/qbittorrent:stable qbittorrent/stable - - docker push epicmorg/qbittorrent:stable From 94f7a4c6332da1856e39b1072cf1b6fb23ca6645 Mon Sep 17 00:00:00 2001 From: stam Date: Thu, 16 Jan 2020 17:31:47 +0300 Subject: [PATCH 40/50] travis.ci fix --- .travis.yml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/.travis.yml b/.travis.yml index fb80d0eee..573ea7caa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -34,21 +34,7 @@ matrix: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/nextcloud:latest nextcloud - docker push epicmorg/nextcloud:latest - -########## - - - name: qBitTorrent [latest + unstable + stable] - script: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - - docker build --compress -t epicmorg/qbittorrent:latest qbittorrent/latest - - docker push epicmorg/qbittorrent:latest - - - docker build --compress -t epicmorg/qbittorrent:unstable qbittorrent/latest - - docker push epicmorg/qbittorrent:unstable - - - docker build --compress -t epicmorg/qbittorrent:stable qbittorrent/stable - - docker push epicmorg/qbittorrent:stable - + ######################################### #### Our High priority images ######################################### @@ -144,6 +130,20 @@ matrix: - docker push epicmorg/jira:latest - docker build --compress -t epicmorg/jira:latest-jdk11 -f atlassian/jira/latest/Dockerfile.jdk11 atlassian/jira/latest - docker push epicmorg/jira:latest-jdk11 + + ########## + + - name: qBitTorrent [latest + unstable + stable] + script: + - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + - docker build --compress -t epicmorg/qbittorrent:latest qbittorrent/latest + - docker push epicmorg/qbittorrent:latest + + - docker build --compress -t epicmorg/qbittorrent:unstable qbittorrent/latest + - docker push epicmorg/qbittorrent:unstable + + - docker build --compress -t epicmorg/qbittorrent:stable qbittorrent/stable + - docker push epicmorg/qbittorrent:stable ######################################### #### Our Bitbucket images From 91a064118b7a63253a80f29ad62f48e16a354b1c Mon Sep 17 00:00:00 2001 From: stam Date: Thu, 16 Jan 2020 22:53:06 +0300 Subject: [PATCH 41/50] travis ci confluence:6.8.2 fix --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 573ea7caa..f5e546516 100644 --- a/.travis.yml +++ b/.travis.yml @@ -591,7 +591,7 @@ matrix: - docker build --compress -t epicmorg/confluence:6.8.1 atlassian/confluence/6.8.1 - docker push epicmorg/confluence:6.8.1 - - docker build --compress -t epicmorg/confluence:6.7.2 atlassian/confluence/6.7.2 + - docker build --compress -t epicmorg/confluence:6.8.2 atlassian/confluence/6.8.2 - docker push epicmorg/confluence:6.8.2 - docker build --compress -t epicmorg/confluence:6.8.3 atlassian/confluence/6.8.3 From 0b08d2a823ec4a1d2fa6efa92a259667b0c53f8a Mon Sep 17 00:00:00 2001 From: stam Date: Thu, 16 Jan 2020 22:55:50 +0300 Subject: [PATCH 42/50] fixed issues/30 optimized final containers which uses devel base --- balancer/latest/Dockerfile | 4 +++- qbittorrent/latest/Dockerfile | 4 +++- qbittorrent/stable/Dockerfile | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/balancer/latest/Dockerfile b/balancer/latest/Dockerfile index 6bd24a6d7..059603997 100644 --- a/balancer/latest/Dockerfile +++ b/balancer/latest/Dockerfile @@ -185,7 +185,9 @@ RUN apt-get update && \ apt autoclean -y && \ rm -rfv /var/lib/apt/lists/* && \ rm -rfv /var/cache/apt/archives/*.deb && \ - rm -rfv /tmp/deb/* + rm -rfv /tmp/deb/* && \ + rm -rfv /builds/* && \ + rm -rfv /valve/* #Final config VOLUME ["/var/cache/nginx"] diff --git a/qbittorrent/latest/Dockerfile b/qbittorrent/latest/Dockerfile index e09823fcc..699eaeb70 100644 --- a/qbittorrent/latest/Dockerfile +++ b/qbittorrent/latest/Dockerfile @@ -38,7 +38,9 @@ RUN apt-get update && \ RUN apt clean -y && \ apt autoclean -y && \ rm -rfv /var/lib/apt/lists/* && \ - rm -rfv /var/cache/apt/archives/*.deb + rm -rfv /var/cache/apt/archives/*.deb && \ + rm -rfv /builds/* && \ + rm -rfv /valve/* VOLUME ${QBT_DIR} diff --git a/qbittorrent/stable/Dockerfile b/qbittorrent/stable/Dockerfile index c88f99867..a1d1eeae2 100644 --- a/qbittorrent/stable/Dockerfile +++ b/qbittorrent/stable/Dockerfile @@ -38,7 +38,9 @@ RUN apt-get update && \ RUN apt clean -y && \ apt autoclean -y && \ rm -rfv /var/lib/apt/lists/* && \ - rm -rfv /var/cache/apt/archives/*.deb + rm -rfv /var/cache/apt/archives/*.deb && \ + rm -rfv /builds/* && \ + rm -rfv /valve/* VOLUME ${QBT_DIR} From fb11a1daf189bcdfcb4bf655e1c531ae4e0f775b Mon Sep 17 00:00:00 2001 From: stam Date: Thu, 16 Jan 2020 22:58:45 +0300 Subject: [PATCH 43/50] revoked bitbucket 6.0.8 container sorry --- .travis.yml | 5 +- CHANGELOG.md | 5 +- .../bitbucket/6.0.8/.docker-repository.yml | 1 - atlassian/bitbucket/6.0.8/.dockerignore | 3 - atlassian/bitbucket/6.0.8/Dockerfile | 45 ---- atlassian/bitbucket/6.0.8/Makefile | 4 - atlassian/bitbucket/6.0.8/README.md | 216 ------------------ .../bitbucket/6.0.8/bitbucket-pipelines.yml | 66 ------ atlassian/bitbucket/6.0.8/entrypoint.sh | 57 ----- 9 files changed, 4 insertions(+), 398 deletions(-) delete mode 100644 atlassian/bitbucket/6.0.8/.docker-repository.yml delete mode 100644 atlassian/bitbucket/6.0.8/.dockerignore delete mode 100644 atlassian/bitbucket/6.0.8/Dockerfile delete mode 100644 atlassian/bitbucket/6.0.8/Makefile delete mode 100644 atlassian/bitbucket/6.0.8/README.md delete mode 100644 atlassian/bitbucket/6.0.8/bitbucket-pipelines.yml delete mode 100644 atlassian/bitbucket/6.0.8/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index f5e546516..8581131f0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -175,10 +175,7 @@ matrix: - docker build --compress -t epicmorg/bitbucket:6.0.7 atlassian/bitbucket/6.0.7 - docker push epicmorg/bitbucket:6.0.7 - - - docker build --compress -t epicmorg/bitbucket:6.0.8 atlassian/bitbucket/6.0.8 - - docker push epicmorg/bitbucket:6.0.8 - + - docker build --compress -t epicmorg/bitbucket:6.0.9 atlassian/bitbucket/6.0.9 - docker push epicmorg/bitbucket:6.0.9 diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b52734e1..4b3846dc0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ ## Changelog -* `January 2020` (01/13/2020 - 01/16/2020) +* `January 2020` (01/13/2020 - 01/17/2020) * separated `base` images to `prod`, `prod:jdk8`, `prod:jdk11`, `devel`, `devel:jdk8`, `devel:jdk11` * teamcity - `devel:jdk11` * updated current atlassian contaners: @@ -19,7 +19,7 @@ * added `Jira 7.7.x`: `7.7.0`, `7.7.1`, `7.7.2`, `7.7.4` * added `Jira 7.8.x`: `7.8.0`, `7.8.1`, `7.8.2`, `7.8.4` * added `Jira 7.9.x`: `7.9.0`, `7.9.2` - * added `Bitbucket 6.0.x`: `6.0.0`, `6.0.1`, `6.0.2`, `6.0.3`, `6.0.4`, `6.0.5`, `6.0.6`, `6.0.7`, `6.0.8`, `6.0.9`, `6.0.10`, `6.0.11` + * added `Bitbucket 6.0.x`: `6.0.0`, `6.0.1`, `6.0.2`, `6.0.3`, `6.0.4`, `6.0.5`, `6.0.6`, `6.0.7`, `6.0.9`, `6.0.10`, `6.0.11` * added `Bitbucket 6.1.x`: `6.1.0`, `6.1.1`, `6.1.2`, `6.1.3`, `6.1.4`, `6.1.5`, `6.1.6`, `6.1.7`, `6.1.8`, `6.1.9` * added `Bitbucket 6.2.x`: `6.2.2`, `6.2.3`, `6.2.4`, `6.2.5`, `6.2.6`, `6.2.7` * added `Bitbucket 6.3.x`: `6.3.3`, `6.3.4`, `6.3.5`, `6.3.6` @@ -47,6 +47,7 @@ * `Atlassian` stack separated to 2 branches: * jdk8-based (default for all images) * jdk11-based for new images (by special `-jdk11` tag) + * optimized final containers which uses `devel` base * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. diff --git a/atlassian/bitbucket/6.0.8/.docker-repository.yml b/atlassian/bitbucket/6.0.8/.docker-repository.yml deleted file mode 100644 index 6a0e5da83..000000000 --- a/atlassian/bitbucket/6.0.8/.docker-repository.yml +++ /dev/null @@ -1 +0,0 @@ -repository: epicmorg/bitbucket diff --git a/atlassian/bitbucket/6.0.8/.dockerignore b/atlassian/bitbucket/6.0.8/.dockerignore deleted file mode 100644 index f5523d40c..000000000 --- a/atlassian/bitbucket/6.0.8/.dockerignore +++ /dev/null @@ -1,3 +0,0 @@ -.git -scripts -.idea diff --git a/atlassian/bitbucket/6.0.8/Dockerfile b/atlassian/bitbucket/6.0.8/Dockerfile deleted file mode 100644 index ba2e26bba..000000000 --- a/atlassian/bitbucket/6.0.8/Dockerfile +++ /dev/null @@ -1,45 +0,0 @@ -FROM epicmorg/prod:jdk11 -LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" -ARG DEBIAN_FRONTEND=noninteractive - -################################################################## -# ARGuments -################################################################## -ARG BITBUCKET_VERSION=6.0.8 -ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz - -################################################################## -# Setup -################################################################## -ENV RUN_USER daemon -ENV RUN_GROUP daemon - -# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory -ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket -ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket - -VOLUME ["${BITBUCKET_HOME}"] -WORKDIR $BITBUCKET_HOME - -# Expose HTTP and SSH ports -EXPOSE 7990 -EXPOSE 7999 - -################################################################## -# Installing -################################################################## -RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ - && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ - && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ - && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ - - update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ - apt clean -y && \ - apt autoclean -y && \ - rm -rfv /var/lib/apt/lists/* && \ - rm -rfv /var/cache/apt/archives/*.deb - -CMD ["/entrypoint.sh", "-fg"] -ENTRYPOINT ["/usr/bin/tini", "--"] -COPY entrypoint.sh /entrypoint.sh -COPY . /tmp diff --git a/atlassian/bitbucket/6.0.8/Makefile b/atlassian/bitbucket/6.0.8/Makefile deleted file mode 100644 index 0b332c38d..000000000 --- a/atlassian/bitbucket/6.0.8/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -all: bitbucket - -bitbucket: - docker build --compress -t epicmorg/bitbucket:6.0.8 . diff --git a/atlassian/bitbucket/6.0.8/README.md b/atlassian/bitbucket/6.0.8/README.md deleted file mode 100644 index b60c42068..000000000 --- a/atlassian/bitbucket/6.0.8/README.md +++ /dev/null @@ -1,216 +0,0 @@ -![Atlassian Bitbucket Server](https://www.atlassian.com/dam/wac/legacy/bitbucket_logo_landing.png) - -Bitbucket Server is an on-premises source code management solution for Git that's secure, fast, and enterprise grade. Create and manage repositories, set up fine-grained permissions, and collaborate on code - all with the flexibility of your servers. - -Learn more about Bitbucket Server: - -# Overview - -This Docker container makes it easy to get an instance of Bitbucket up and running. - -** We strongly recommend you run this image using a specific version tag instead of latest. This is because the image referenced by the latest tag changes often and we cannot guarantee that it will be backwards compatible. ** - -# Quick Start - -For the `BITBUCKET_HOME` directory that is used to store the repository data -(amongst other things) we recommend mounting a host directory as a [data volume](https://docs.docker.com/engine/tutorials/dockervolumes/#/data-volumes), or via a named volume if using a docker version >= 1.9. - -Volume permission is managed by entry scripts. To get started you can use a data volume, or named volumes. In this example we'll use named volumes. - - $> docker volume create --name bitbucketVolume - $> docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server - -Note that this command can substitute folder paths with named volumes. - -Start Atlassian Bitbucket Server: - - $> docker run -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server - -**Success**. Bitbucket is now available on [http://localhost:7990](http://localhost:7990)* - -Please ensure your container has the necessary resources allocated to it. -We recommend 2GiB of memory allocated to accommodate both the application server -and the git processes. -See [Supported Platforms](https://confluence.atlassian.com/display/BitbucketServer/Supported+platforms) for further information. - - -_* Note: If you are using `docker-machine` on Mac OS X, please use `open http://$(docker-machine ip default):7990` instead._ - -## Reverse Proxy Settings - -If Bitbucket is run behind a reverse proxy server as [described here](https://confluence.atlassian.com/bitbucketserver/proxying-and-securing-bitbucket-server-776640099.html), -then you need to specify extra options to make bitbucket aware of the setup. They can be controlled via the below -environment variables. - -### Bitbucket Server 5.0 + - -Due to the migration to Spring Boot in 5.0, there are changes to how you set up Bitbucket to run behind a reverse proxy. - -In this example, we'll use an environment file. You can also do this via [specifying each environment variable](https://docs.docker.com/engine/reference/run/#env-environment-variables) via the `-e` argument in `docker run`. - -#### secure-bitbucket.env -``` -SERVER_SECURE=true -SERVER_SCHEME=https -SERVER_PROXY_PORT=443 -SERVER_PROXY_NAME= -``` - -Then you run Bitbucket as usual - -`docker run -v bitbucketVolume:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 --env-file=/path/to/env/file/secure-bitbucket.env atlassian/bitbucket-server:5.0` - -### Bitbucket Server < 5.0 - -To set the reverse proxy arguments, you specify the following as environment variables in the `docker run` command - -* `CATALINA_CONNECTOR_PROXYNAME` (default: NONE) - - The reverse proxy's fully qualified hostname. - -* `CATALINA_CONNECTOR_PROXYPORT` (default: NONE) - - The reverse proxy's port number via which bitbucket is accessed. - -* `CATALINA_CONNECTOR_SCHEME` (default: http) - - The protocol via which bitbucket is accessed. - -* `CATALINA_CONNECTOR_SECURE` (default: false) - - Set 'true' if CATALINA\_CONNECTOR\_SCHEME is 'https'. - -## JVM Configuration (Bitbucket Server 5.0 + only) - -If you need to override Bitbucket Server's default memory configuration or pass additional JVM arguments, use the environment variables below - -* `JVM_MINIMUM_MEMORY` (default: 512m) - - The minimum heap size of the JVM - -* `JVM_MAXIMUM_MEMORY` (default: 1024m) - - The maximum heap size of the JVM - -* `JVM_SUPPORT_RECOMMENDED_ARGS` (default: NONE) - - Additional JVM arguments for Bitbucket Server, such as a custom Java Trust Store - -## Application Mode Settings (Bitbucket Server 5.0 + only) - -This docker image can be run as a [Smart Mirror](https://confluence.atlassian.com/bitbucketserver/smart-mirroring-776640046.html) or as part of a [Data Center](https://confluence.atlassian.com/enterprise/bitbucket-data-center-668468332.html) cluster. -You can specify the following properties to start Bitbucket as a mirror or as a Data Center node: - -* `ELASTICSEARCH_ENABLED` (default: true) - - Set 'false' to prevent Elasticsearch from starting in the container. This should be used if Elasticsearch is running remotely, e.g. for if Bitbucket is running in a Data Center cluster - -* `APPLICATION_MODE` (default: default) - - The mode Bitbucket will run in. This can be set to 'mirror' to start Bitbucket as a Smart Mirror. This will also disable Elasticsearch even if `ELASTICSEARCH_ENABLED` has not been set to 'false'. - -* `HAZELCAST_NETWORK_MULTICAST` (default: false) - - Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via multicast. `HAZELCAST_NETWORK_TCPIP` should not be specified when using this setting. - -* `HAZELCAST_NETWORK_TCPIP` (default: false) - - Data Center: Set 'true' to enable Bitbucket to find new Data Center cluster members via TCPIP. This setting requires `HAZELCAST_NETWORK_TCPIP_MEMBERS` to be specified. `HAZELCAST_NETWORK_MULTICAST` should not be specified when using this setting. - -* `HAZELCAST_NETWORK_TCPIP_MEMBERS` - - Data Center: List of members that Hazelcast nodes should connect to when HAZELCAST_NETWORK_TCPIP is 'true' - -* `HAZELCAST_GROUP_NAME` - - Data Center: Specifies the cluster group the instance should join. - -* `HAZELCAST_GROUP_PASSWORD` - - Data Center: The password required to join the specified cluster group. - -To run Bitbucket as part of a Data Center cluster, create a Docker network and assign the Bitbucket container a static IP. - -Note: Docker networks may support multicast, however the below example shows configuration using TCPIP. - - $> docker network create --driver bridge --subnet=172.18.0.0/16 myBitbucketNetwork - $> docker run --network=myBitbucketNetwork --ip=172.18.1.1 -e ELASTICSEARCH_ENABLED=false \ - -e HAZELCAST_NETWORK_TCPIP=true -e HAZELCAST_NETWORK_TCPIP_MEMBERS=172.18.1.1:5701,172.18.1.2:5701,172.18.1.3:5701 \ - -e HAZELCAST_GROUP_NAME=bitbucket -e HAZELCAST_GROUP_PASSWORD=mysecretpassword \ - -v /data/bitbucket-shared:/var/atlassian/application-data/bitbucket/shared --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server - -## JMX Monitoring (Bitbucket Server 5.0 + only) - -Bitbucket Server supports detailed JMX monitoring. To enable and configure JMX, use the environment variables below. For further information on JMX configuration, see [Enabling JMX counters for performance monitoring](https://confluence.atlassian.com/bitbucketserver/enabling-jmx-counters-for-performance-monitoring-776640189.html) - -* `JMX_ENABLED` (default: false) - - Enable Bitbucket to publish JMX data - -* `JMX_REMOTE_AUTH` (default: NONE) - - Set the authentication to use for remote JMX access. This value is required: anything other than "password" or "ssl" will cause remote JMX access to be disabled - -* `JMX_REMOTE_PORT` (default: 3333) - - The port used to negotiate a JMX connection. Note: this port is only used during the initial authorization, after which a different RMI port used for data transfer - -* `JMX_REMOTE_RMI_PORT` (default: ) - - The port used for all subsequent JMX-RMI data transfer. If desired, the RMI data port can be set to the same value as `JMX_REMOTE_PORT` to allow a single port to be used for both JMX authorization and data transfer - -* `RMI_SERVER_HOSTNAME` (default: NONE) - - The hostname or IP address that clients will use to connect to the application for JMX monitoring. This must be resolvable by both clients and from the JVM host machine. - -* `JMX_PASSWORD_FILE` (default: NONE) - - The full path to the JMX username/password file used to authenticate remote JMX clients. This is required when `JMX_REMOTE_AUTH` is set to "password" - - $> docker run -e JMX_ENABLED=true -e JMX_REMOTE_AUTH=password -e JMX_REMOTE_RMI_PORT=3333 -e RMI_SERVER_HOSTNAME=bitbucket \ - -e JMX_PASSWORD_FILE=/data/bitbucket:/var/atlassian/application-data/bitbucket/jmx.access \ - -v /data/bitbucket:/var/atlassian/application-data/bitbucket --name="bitbucket" -d -p 7990:7990 -p 7999:7999 -p 3333:3333 atlassian/bitbucket-server - -# Upgrade - -To upgrade to a more recent version of Bitbucket Server you can simply stop the `bitbucket` -container and start a new one based on a more recent image: - - $> docker stop bitbucket - $> docker rm bitbucket - $> docker pull atlassian/bitbucket-server: - $> docker run ... (See above) - -As your data is stored in the data volume directory on the host it will still -be available after the upgrade. - -_Note: Please make sure that you **don't** accidentally remove the `bitbucket` -container and its volumes using the `-v` option._ - -# Backup - -For evaluations you can use the built-in database that will store its files in the Bitbucket Server home directory. In that case it is sufficient to create a backup archive of the directory on the host that is used as a volume (`/data/bitbucket` in the example above). - -The [Bitbucket Server Backup Client](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) is currently not supported in the Docker setup. You can however use the [Bitbucket Server DIY Backup](https://confluence.atlassian.com/display/BitbucketServer/Using+Bitbucket+Server+DIY+Backup) approach in case you decided to use an external database. - -Read more about data recovery and backups: [https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups](https://confluence.atlassian.com/display/BitbucketServer/Data+recovery+and+backups) - -# Versioning - -The `latest` tag matches the most recent version of this repository. Thus using `atlassian/bitbucket:latest` or `atlassian/bitbucket` will ensure you are running the most up to date version of this image. - -However, we ** strongly recommend ** that for non-eval workloads you select a specific version in order to prevent breaking changes from impacting your setup. -You can use a specific minor version of Bitbucket Server by using a version number -tag: `atlassian/bitbucket-server:4.14`. This will install the latest `4.14.x` version that -is available. - - -# Issue tracker - -Please raise an [issue](https://bitbucket.org/atlassian/docker-atlassian-bitbucket-server/issues) if you encounter any problems with this Dockerfile. - -# Support - -For product support, go to [support.atlassian.com](https://support.atlassian.com/) -Octotree is enabled on this page. Click this button or press cmd shift s (or ctrl shift s) to show it. -Support us • Feedback? diff --git a/atlassian/bitbucket/6.0.8/bitbucket-pipelines.yml b/atlassian/bitbucket/6.0.8/bitbucket-pipelines.yml deleted file mode 100644 index 231d79e9e..000000000 --- a/atlassian/bitbucket/6.0.8/bitbucket-pipelines.yml +++ /dev/null @@ -1,66 +0,0 @@ -image: dchevell/docker-release-maker:latest -clone: - depth: full - -pipelines: - custom: - create-release-base-5: - - step: - script: - - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} - - git fetch --all - - export BASE_BRANCH='base-5' - - export MAC_PRODUCT_KEY='bitbucket' - - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' - - export DEFAULT_RELEASE='true' - - export ADDITIONAL_TAG_SUFFIXES='alpine' - - python /usr/src/app/run.py --create - create-release-base-6: - - step: - script: - - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} - - git fetch --all - - export BASE_BRANCH='base-6' - - export MAC_PRODUCT_KEY='bitbucket' - - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' - - export DEFAULT_RELEASE='true' - - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' - - python /usr/src/app/run.py --create - test: - - step: - image: docker:stable-git - script: - # Run bitbucket docker image - - mkdir -p data - - | - docker run -v $(pwd)/data:/var/atlassian/application-data/bitbucket \ - --name="bitbucket" -d -p 7990:7990 -p 7999:7999 atlassian/bitbucket-server - # Run tests - - git show origin/scripts:scripts/test-bitbucket-status.sh | install -m 0755 /dev/fd/0 test-bitbucket-status.sh - - ./test-bitbucket-status.sh - services: - - docker - - branches: - base-5: - - step: - script: - - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} - - git fetch --all - - export BASE_BRANCH='base-5' - - export MAC_PRODUCT_KEY='bitbucket' - - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' - - export DEFAULT_RELEASE='true' - - export ADDITIONAL_TAG_SUFFIXES='alpine' - - python /usr/src/app/run.py --update - base-6: - - step: - script: - - git remote set-url origin ${BITBUCKET_GIT_HTTP_ORIGIN} - - git fetch --all - - export BASE_BRANCH='base-6' - - export MAC_PRODUCT_KEY='bitbucket' - - export DOCKERFILE_VERSION_STRING='BITBUCKET_VERSION' - - export DEFAULT_RELEASE='true' - - export ADDITIONAL_TAG_SUFFIXES='jdk8,ubuntu' - - python /usr/src/app/run.py --update diff --git a/atlassian/bitbucket/6.0.8/entrypoint.sh b/atlassian/bitbucket/6.0.8/entrypoint.sh deleted file mode 100644 index 842224a8c..000000000 --- a/atlassian/bitbucket/6.0.8/entrypoint.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -set -euo pipefail - -# Set recommended umask of "u=,g=w,o=rwx" (0027) -umask 0027 - -export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::") -export JRE_HOME="$JAVA_HOME/jre" -export JAVA_BINARY="$JRE_HOME/bin/java" -export JAVA_VERSION=$("$JAVA_BINARY" -version 2>&1 | awk -F '"' '/version/ {print $2}') - -#export PATH=$JAVA_HOME/bin:$PATH - - -# Setup Catalina Opts -: ${CATALINA_CONNECTOR_PROXYNAME:=} -: ${CATALINA_CONNECTOR_PROXYPORT:=} -: ${CATALINA_CONNECTOR_SCHEME:=http} -: ${CATALINA_CONNECTOR_SECURE:=false} - -: ${CATALINA_OPTS:=} - -: ${JAVA_OPTS:=} - -: ${ELASTICSEARCH_ENABLED:=true} -: ${APPLICATION_MODE:=} - -CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyName=${CATALINA_CONNECTOR_PROXYNAME}" -CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorProxyPort=${CATALINA_CONNECTOR_PROXYPORT}" -CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorScheme=${CATALINA_CONNECTOR_SCHEME}" -CATALINA_OPTS="${CATALINA_OPTS} -DcatalinaConnectorSecure=${CATALINA_CONNECTOR_SECURE}" - -JAVA_OPTS="${JAVA_OPTS} ${CATALINA_OPTS}" - -ARGS="$@" - -# Start Bitbucket without Elasticsearch -if [ "${ELASTICSEARCH_ENABLED}" == "false" ] || [ "${APPLICATION_MODE}" == "mirror" ]; then - ARGS="--no-search ${ARGS}" -fi - -# Start Bitbucket as the correct user. -if [ "${UID}" -eq 0 ]; then - echo "User is currently root. Will change directory ownership to ${RUN_USER}:${RUN_GROUP}, then downgrade permission to ${RUN_USER}" - PERMISSIONS_SIGNATURE=$(stat -c "%u:%U:%a" "${BITBUCKET_HOME}") - EXPECTED_PERMISSIONS=$(id -u ${RUN_USER}):${RUN_USER}:700 - if [ "${PERMISSIONS_SIGNATURE}" != "${EXPECTED_PERMISSIONS}" ]; then - echo "Updating permissions for BITBUCKET_HOME" - mkdir -p "${BITBUCKET_HOME}/lib" && - chmod -R 700 "${BITBUCKET_HOME}" && - chown -R "${RUN_USER}:${RUN_GROUP}" "${BITBUCKET_HOME}" - fi - # Now drop privileges - exec su -s /bin/bash "${RUN_USER}" -c "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh ${ARGS}" -else - exec "${BITBUCKET_INSTALL_DIR}/bin/start-bitbucket.sh" ${ARGS} -fi From afc7853670386e198f26549eb88923ddc061b14b Mon Sep 17 00:00:00 2001 From: stam Date: Fri, 17 Jan 2020 00:01:55 +0300 Subject: [PATCH 44/50] jdk11 saparated --- atlassian/bitbucket/6.0.0/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.0.1/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.0.10/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.0.11/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.0.2/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.0.3/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.0.4/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.0.5/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.0.6/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.0.7/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.0.9/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.1.0/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.1.1/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.1.2/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.1.3/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.1.4/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.1.5/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.1.6/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.1.7/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.1.8/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.1.9/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.10.0/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.2.0/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.2.1/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.2.2/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.2.3/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.2.4/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.2.5/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.2.6/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.2.7/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.3.0/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.3.1/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.3.2/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.3.3/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.3.4/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.3.5/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.3.6/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.4.0/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.4.1/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.4.2/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.4.3/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.4.4/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.5.0/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.5.1/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.5.2/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.5.3/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.6.0/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.6.1/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.6.2/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.6.3/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.7.0/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.7.1/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.7.2/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.7.3/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.8.0/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.8.1/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.8.2/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.9.0/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/bitbucket/6.9.1/Dockerfile.jdk11 | 45 ++++++++++++++++++++ atlassian/jira/8.2.0/Dockerfile.jdk11 | 47 +++++++++++++++++++++ atlassian/jira/8.2.1/Dockerfile.jdk11 | 47 +++++++++++++++++++++ atlassian/jira/8.2.2/Dockerfile.jdk11 | 47 +++++++++++++++++++++ atlassian/jira/8.2.3/Dockerfile.jdk11 | 47 +++++++++++++++++++++ atlassian/jira/8.2.4/Dockerfile.jdk11 | 47 +++++++++++++++++++++ atlassian/jira/8.2.5/Dockerfile.jdk11 | 47 +++++++++++++++++++++ atlassian/jira/8.2.6/Dockerfile.jdk11 | 47 +++++++++++++++++++++ atlassian/jira/8.3.0/Dockerfile.jdk11 | 47 +++++++++++++++++++++ atlassian/jira/8.3.1/Dockerfile.jdk11 | 47 +++++++++++++++++++++ atlassian/jira/8.3.2/Dockerfile.jdk11 | 47 +++++++++++++++++++++ atlassian/jira/8.3.3/Dockerfile.jdk11 | 47 +++++++++++++++++++++ atlassian/jira/8.3.4/Dockerfile.jdk11 | 47 +++++++++++++++++++++ atlassian/jira/8.3.5/Dockerfile.jdk11 | 47 +++++++++++++++++++++ atlassian/jira/8.4.0/Dockerfile.jdk11 | 47 +++++++++++++++++++++ atlassian/jira/8.4.1/Dockerfile.jdk11 | 47 +++++++++++++++++++++ atlassian/jira/8.4.2/Dockerfile.jdk11 | 47 +++++++++++++++++++++ atlassian/jira/8.4.3/Dockerfile.jdk11 | 47 +++++++++++++++++++++ atlassian/jira/8.5.0/Dockerfile.jdk11 | 47 +++++++++++++++++++++ atlassian/jira/8.5.1/Dockerfile.jdk11 | 47 +++++++++++++++++++++ atlassian/jira/8.5.2/Dockerfile.jdk11 | 47 +++++++++++++++++++++ atlassian/jira/8.5.3/Dockerfile.jdk11 | 47 +++++++++++++++++++++ atlassian/jira/8.6.0/Dockerfile.jdk11 | 47 +++++++++++++++++++++ atlassian/jira/8.6.1/Dockerfile.jdk11 | 47 +++++++++++++++++++++ 82 files changed, 3736 insertions(+) create mode 100644 atlassian/bitbucket/6.0.0/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.0.1/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.0.10/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.0.11/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.0.2/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.0.3/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.0.4/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.0.5/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.0.6/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.0.7/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.0.9/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.1.0/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.1.1/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.1.2/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.1.3/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.1.4/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.1.5/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.1.6/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.1.7/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.1.8/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.1.9/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.10.0/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.2.0/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.2.1/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.2.2/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.2.3/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.2.4/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.2.5/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.2.6/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.2.7/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.3.0/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.3.1/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.3.2/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.3.3/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.3.4/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.3.5/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.3.6/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.4.0/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.4.1/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.4.2/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.4.3/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.4.4/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.5.0/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.5.1/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.5.2/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.5.3/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.6.0/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.6.1/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.6.2/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.6.3/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.7.0/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.7.1/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.7.2/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.7.3/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.8.0/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.8.1/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.8.2/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.9.0/Dockerfile.jdk11 create mode 100644 atlassian/bitbucket/6.9.1/Dockerfile.jdk11 create mode 100644 atlassian/jira/8.2.0/Dockerfile.jdk11 create mode 100644 atlassian/jira/8.2.1/Dockerfile.jdk11 create mode 100644 atlassian/jira/8.2.2/Dockerfile.jdk11 create mode 100644 atlassian/jira/8.2.3/Dockerfile.jdk11 create mode 100644 atlassian/jira/8.2.4/Dockerfile.jdk11 create mode 100644 atlassian/jira/8.2.5/Dockerfile.jdk11 create mode 100644 atlassian/jira/8.2.6/Dockerfile.jdk11 create mode 100644 atlassian/jira/8.3.0/Dockerfile.jdk11 create mode 100644 atlassian/jira/8.3.1/Dockerfile.jdk11 create mode 100644 atlassian/jira/8.3.2/Dockerfile.jdk11 create mode 100644 atlassian/jira/8.3.3/Dockerfile.jdk11 create mode 100644 atlassian/jira/8.3.4/Dockerfile.jdk11 create mode 100644 atlassian/jira/8.3.5/Dockerfile.jdk11 create mode 100644 atlassian/jira/8.4.0/Dockerfile.jdk11 create mode 100644 atlassian/jira/8.4.1/Dockerfile.jdk11 create mode 100644 atlassian/jira/8.4.2/Dockerfile.jdk11 create mode 100644 atlassian/jira/8.4.3/Dockerfile.jdk11 create mode 100644 atlassian/jira/8.5.0/Dockerfile.jdk11 create mode 100644 atlassian/jira/8.5.1/Dockerfile.jdk11 create mode 100644 atlassian/jira/8.5.2/Dockerfile.jdk11 create mode 100644 atlassian/jira/8.5.3/Dockerfile.jdk11 create mode 100644 atlassian/jira/8.6.0/Dockerfile.jdk11 create mode 100644 atlassian/jira/8.6.1/Dockerfile.jdk11 diff --git a/atlassian/bitbucket/6.0.0/Dockerfile.jdk11 b/atlassian/bitbucket/6.0.0/Dockerfile.jdk11 new file mode 100644 index 000000000..e2d740f96 --- /dev/null +++ b/atlassian/bitbucket/6.0.0/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.0.0 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.0.1/Dockerfile.jdk11 b/atlassian/bitbucket/6.0.1/Dockerfile.jdk11 new file mode 100644 index 000000000..062d04b0a --- /dev/null +++ b/atlassian/bitbucket/6.0.1/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.0.1 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.0.10/Dockerfile.jdk11 b/atlassian/bitbucket/6.0.10/Dockerfile.jdk11 new file mode 100644 index 000000000..7e46dc3d5 --- /dev/null +++ b/atlassian/bitbucket/6.0.10/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.0.10 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.0.11/Dockerfile.jdk11 b/atlassian/bitbucket/6.0.11/Dockerfile.jdk11 new file mode 100644 index 000000000..ff9ce227c --- /dev/null +++ b/atlassian/bitbucket/6.0.11/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.0.11 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.0.2/Dockerfile.jdk11 b/atlassian/bitbucket/6.0.2/Dockerfile.jdk11 new file mode 100644 index 000000000..b2787c46d --- /dev/null +++ b/atlassian/bitbucket/6.0.2/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.0.2 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.0.3/Dockerfile.jdk11 b/atlassian/bitbucket/6.0.3/Dockerfile.jdk11 new file mode 100644 index 000000000..b344ab06c --- /dev/null +++ b/atlassian/bitbucket/6.0.3/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.0.3 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.0.4/Dockerfile.jdk11 b/atlassian/bitbucket/6.0.4/Dockerfile.jdk11 new file mode 100644 index 000000000..caefc5aff --- /dev/null +++ b/atlassian/bitbucket/6.0.4/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.0.4 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.0.5/Dockerfile.jdk11 b/atlassian/bitbucket/6.0.5/Dockerfile.jdk11 new file mode 100644 index 000000000..38859b28e --- /dev/null +++ b/atlassian/bitbucket/6.0.5/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.0.5 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.0.6/Dockerfile.jdk11 b/atlassian/bitbucket/6.0.6/Dockerfile.jdk11 new file mode 100644 index 000000000..6dcc7175d --- /dev/null +++ b/atlassian/bitbucket/6.0.6/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.0.6 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.0.7/Dockerfile.jdk11 b/atlassian/bitbucket/6.0.7/Dockerfile.jdk11 new file mode 100644 index 000000000..c51b46a3f --- /dev/null +++ b/atlassian/bitbucket/6.0.7/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.0.7 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.0.9/Dockerfile.jdk11 b/atlassian/bitbucket/6.0.9/Dockerfile.jdk11 new file mode 100644 index 000000000..96aa8d176 --- /dev/null +++ b/atlassian/bitbucket/6.0.9/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.0.9 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.1.0/Dockerfile.jdk11 b/atlassian/bitbucket/6.1.0/Dockerfile.jdk11 new file mode 100644 index 000000000..3d877d7dc --- /dev/null +++ b/atlassian/bitbucket/6.1.0/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.1.0 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.1.1/Dockerfile.jdk11 b/atlassian/bitbucket/6.1.1/Dockerfile.jdk11 new file mode 100644 index 000000000..7cd3f13f1 --- /dev/null +++ b/atlassian/bitbucket/6.1.1/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.1.1 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.1.2/Dockerfile.jdk11 b/atlassian/bitbucket/6.1.2/Dockerfile.jdk11 new file mode 100644 index 000000000..34a9a0c08 --- /dev/null +++ b/atlassian/bitbucket/6.1.2/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.1.2 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.1.3/Dockerfile.jdk11 b/atlassian/bitbucket/6.1.3/Dockerfile.jdk11 new file mode 100644 index 000000000..43807d731 --- /dev/null +++ b/atlassian/bitbucket/6.1.3/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.1.3 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.1.4/Dockerfile.jdk11 b/atlassian/bitbucket/6.1.4/Dockerfile.jdk11 new file mode 100644 index 000000000..e4a2add7e --- /dev/null +++ b/atlassian/bitbucket/6.1.4/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.1.4 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.1.5/Dockerfile.jdk11 b/atlassian/bitbucket/6.1.5/Dockerfile.jdk11 new file mode 100644 index 000000000..40ca9f3d1 --- /dev/null +++ b/atlassian/bitbucket/6.1.5/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.1.5 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.1.6/Dockerfile.jdk11 b/atlassian/bitbucket/6.1.6/Dockerfile.jdk11 new file mode 100644 index 000000000..f136b0930 --- /dev/null +++ b/atlassian/bitbucket/6.1.6/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.1.6 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.1.7/Dockerfile.jdk11 b/atlassian/bitbucket/6.1.7/Dockerfile.jdk11 new file mode 100644 index 000000000..e1d78352a --- /dev/null +++ b/atlassian/bitbucket/6.1.7/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.1.7 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.1.8/Dockerfile.jdk11 b/atlassian/bitbucket/6.1.8/Dockerfile.jdk11 new file mode 100644 index 000000000..29317a8ad --- /dev/null +++ b/atlassian/bitbucket/6.1.8/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.1.8 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.1.9/Dockerfile.jdk11 b/atlassian/bitbucket/6.1.9/Dockerfile.jdk11 new file mode 100644 index 000000000..c30f7a6ee --- /dev/null +++ b/atlassian/bitbucket/6.1.9/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.1.9 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.10.0/Dockerfile.jdk11 b/atlassian/bitbucket/6.10.0/Dockerfile.jdk11 new file mode 100644 index 000000000..053caa0ff --- /dev/null +++ b/atlassian/bitbucket/6.10.0/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.10.0 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.2.0/Dockerfile.jdk11 b/atlassian/bitbucket/6.2.0/Dockerfile.jdk11 new file mode 100644 index 000000000..b54e88165 --- /dev/null +++ b/atlassian/bitbucket/6.2.0/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.2.0 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.2.1/Dockerfile.jdk11 b/atlassian/bitbucket/6.2.1/Dockerfile.jdk11 new file mode 100644 index 000000000..e75ca5e43 --- /dev/null +++ b/atlassian/bitbucket/6.2.1/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.2.1 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.2.2/Dockerfile.jdk11 b/atlassian/bitbucket/6.2.2/Dockerfile.jdk11 new file mode 100644 index 000000000..b6a53aa0a --- /dev/null +++ b/atlassian/bitbucket/6.2.2/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.2.2 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.2.3/Dockerfile.jdk11 b/atlassian/bitbucket/6.2.3/Dockerfile.jdk11 new file mode 100644 index 000000000..ca22f13d7 --- /dev/null +++ b/atlassian/bitbucket/6.2.3/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.2.3 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.2.4/Dockerfile.jdk11 b/atlassian/bitbucket/6.2.4/Dockerfile.jdk11 new file mode 100644 index 000000000..2b6bc29f3 --- /dev/null +++ b/atlassian/bitbucket/6.2.4/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.2.4 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.2.5/Dockerfile.jdk11 b/atlassian/bitbucket/6.2.5/Dockerfile.jdk11 new file mode 100644 index 000000000..5ebb396e4 --- /dev/null +++ b/atlassian/bitbucket/6.2.5/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.2.5 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.2.6/Dockerfile.jdk11 b/atlassian/bitbucket/6.2.6/Dockerfile.jdk11 new file mode 100644 index 000000000..8530e21ae --- /dev/null +++ b/atlassian/bitbucket/6.2.6/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.2.6 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.2.7/Dockerfile.jdk11 b/atlassian/bitbucket/6.2.7/Dockerfile.jdk11 new file mode 100644 index 000000000..8ebe06e9a --- /dev/null +++ b/atlassian/bitbucket/6.2.7/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.2.7 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.3.0/Dockerfile.jdk11 b/atlassian/bitbucket/6.3.0/Dockerfile.jdk11 new file mode 100644 index 000000000..8f9acef31 --- /dev/null +++ b/atlassian/bitbucket/6.3.0/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.3.0 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.3.1/Dockerfile.jdk11 b/atlassian/bitbucket/6.3.1/Dockerfile.jdk11 new file mode 100644 index 000000000..346601dd1 --- /dev/null +++ b/atlassian/bitbucket/6.3.1/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.3.1 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.3.2/Dockerfile.jdk11 b/atlassian/bitbucket/6.3.2/Dockerfile.jdk11 new file mode 100644 index 000000000..7b26a0df2 --- /dev/null +++ b/atlassian/bitbucket/6.3.2/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.3.2 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.3.3/Dockerfile.jdk11 b/atlassian/bitbucket/6.3.3/Dockerfile.jdk11 new file mode 100644 index 000000000..5e4e3cc83 --- /dev/null +++ b/atlassian/bitbucket/6.3.3/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.3.3 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.3.4/Dockerfile.jdk11 b/atlassian/bitbucket/6.3.4/Dockerfile.jdk11 new file mode 100644 index 000000000..9ca261f0d --- /dev/null +++ b/atlassian/bitbucket/6.3.4/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.3.4 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.3.5/Dockerfile.jdk11 b/atlassian/bitbucket/6.3.5/Dockerfile.jdk11 new file mode 100644 index 000000000..cdfc1eca5 --- /dev/null +++ b/atlassian/bitbucket/6.3.5/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.3.5 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.3.6/Dockerfile.jdk11 b/atlassian/bitbucket/6.3.6/Dockerfile.jdk11 new file mode 100644 index 000000000..0c69fb20f --- /dev/null +++ b/atlassian/bitbucket/6.3.6/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.3.6 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.4.0/Dockerfile.jdk11 b/atlassian/bitbucket/6.4.0/Dockerfile.jdk11 new file mode 100644 index 000000000..1e0821e46 --- /dev/null +++ b/atlassian/bitbucket/6.4.0/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.4.0 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.4.1/Dockerfile.jdk11 b/atlassian/bitbucket/6.4.1/Dockerfile.jdk11 new file mode 100644 index 000000000..6b25e0704 --- /dev/null +++ b/atlassian/bitbucket/6.4.1/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.4.1 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.4.2/Dockerfile.jdk11 b/atlassian/bitbucket/6.4.2/Dockerfile.jdk11 new file mode 100644 index 000000000..d8caaa055 --- /dev/null +++ b/atlassian/bitbucket/6.4.2/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.4.2 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.4.3/Dockerfile.jdk11 b/atlassian/bitbucket/6.4.3/Dockerfile.jdk11 new file mode 100644 index 000000000..b9af28c9a --- /dev/null +++ b/atlassian/bitbucket/6.4.3/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.4.3 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.4.4/Dockerfile.jdk11 b/atlassian/bitbucket/6.4.4/Dockerfile.jdk11 new file mode 100644 index 000000000..048852cdc --- /dev/null +++ b/atlassian/bitbucket/6.4.4/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.4.4 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.5.0/Dockerfile.jdk11 b/atlassian/bitbucket/6.5.0/Dockerfile.jdk11 new file mode 100644 index 000000000..75c4d0dc3 --- /dev/null +++ b/atlassian/bitbucket/6.5.0/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.5.0 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.5.1/Dockerfile.jdk11 b/atlassian/bitbucket/6.5.1/Dockerfile.jdk11 new file mode 100644 index 000000000..93a21cf28 --- /dev/null +++ b/atlassian/bitbucket/6.5.1/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.5.1 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.5.2/Dockerfile.jdk11 b/atlassian/bitbucket/6.5.2/Dockerfile.jdk11 new file mode 100644 index 000000000..3b08acf93 --- /dev/null +++ b/atlassian/bitbucket/6.5.2/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.5.2 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.5.3/Dockerfile.jdk11 b/atlassian/bitbucket/6.5.3/Dockerfile.jdk11 new file mode 100644 index 000000000..7c4247ef6 --- /dev/null +++ b/atlassian/bitbucket/6.5.3/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.5.3 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.6.0/Dockerfile.jdk11 b/atlassian/bitbucket/6.6.0/Dockerfile.jdk11 new file mode 100644 index 000000000..599124d29 --- /dev/null +++ b/atlassian/bitbucket/6.6.0/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.6.0 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.6.1/Dockerfile.jdk11 b/atlassian/bitbucket/6.6.1/Dockerfile.jdk11 new file mode 100644 index 000000000..c459bc9a4 --- /dev/null +++ b/atlassian/bitbucket/6.6.1/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.6.1 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.6.2/Dockerfile.jdk11 b/atlassian/bitbucket/6.6.2/Dockerfile.jdk11 new file mode 100644 index 000000000..e0db4fc35 --- /dev/null +++ b/atlassian/bitbucket/6.6.2/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.6.2 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.6.3/Dockerfile.jdk11 b/atlassian/bitbucket/6.6.3/Dockerfile.jdk11 new file mode 100644 index 000000000..03bd57405 --- /dev/null +++ b/atlassian/bitbucket/6.6.3/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.6.3 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.7.0/Dockerfile.jdk11 b/atlassian/bitbucket/6.7.0/Dockerfile.jdk11 new file mode 100644 index 000000000..7e422c1eb --- /dev/null +++ b/atlassian/bitbucket/6.7.0/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.7.0 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.7.1/Dockerfile.jdk11 b/atlassian/bitbucket/6.7.1/Dockerfile.jdk11 new file mode 100644 index 000000000..cd2d58f0b --- /dev/null +++ b/atlassian/bitbucket/6.7.1/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.7.1 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.7.2/Dockerfile.jdk11 b/atlassian/bitbucket/6.7.2/Dockerfile.jdk11 new file mode 100644 index 000000000..eb4e08c46 --- /dev/null +++ b/atlassian/bitbucket/6.7.2/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.7.2 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.7.3/Dockerfile.jdk11 b/atlassian/bitbucket/6.7.3/Dockerfile.jdk11 new file mode 100644 index 000000000..fd9f18206 --- /dev/null +++ b/atlassian/bitbucket/6.7.3/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.7.3 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.8.0/Dockerfile.jdk11 b/atlassian/bitbucket/6.8.0/Dockerfile.jdk11 new file mode 100644 index 000000000..2106400bf --- /dev/null +++ b/atlassian/bitbucket/6.8.0/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.8.0 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.8.1/Dockerfile.jdk11 b/atlassian/bitbucket/6.8.1/Dockerfile.jdk11 new file mode 100644 index 000000000..239ce3eaa --- /dev/null +++ b/atlassian/bitbucket/6.8.1/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.8.1 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.8.2/Dockerfile.jdk11 b/atlassian/bitbucket/6.8.2/Dockerfile.jdk11 new file mode 100644 index 000000000..c10291b6a --- /dev/null +++ b/atlassian/bitbucket/6.8.2/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.8.2 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.9.0/Dockerfile.jdk11 b/atlassian/bitbucket/6.9.0/Dockerfile.jdk11 new file mode 100644 index 000000000..a3e364a29 --- /dev/null +++ b/atlassian/bitbucket/6.9.0/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.9.0 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/bitbucket/6.9.1/Dockerfile.jdk11 b/atlassian/bitbucket/6.9.1/Dockerfile.jdk11 new file mode 100644 index 000000000..aec1fd5d7 --- /dev/null +++ b/atlassian/bitbucket/6.9.1/Dockerfile.jdk11 @@ -0,0 +1,45 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG BITBUCKET_VERSION=6.9.1 +ARG DOWNLOAD_URL=https://product-downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/BitbucketServer/Bitbucket+Server+home+directory +ENV BITBUCKET_HOME /var/atlassian/application-data/bitbucket +ENV BITBUCKET_INSTALL_DIR /opt/atlassian/bitbucket + +VOLUME ["${BITBUCKET_HOME}"] +WORKDIR $BITBUCKET_HOME + +# Expose HTTP and SSH ports +EXPOSE 7990 +EXPOSE 7999 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${BITBUCKET_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "${BITBUCKET_INSTALL_DIR}" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${BITBUCKET_INSTALL_DIR}/ \ + && sed -i -e 's/^# umask/umask/' ${BITBUCKET_INSTALL_DIR}/bin/_start-webapp.sh && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/8.2.0/Dockerfile.jdk11 b/atlassian/jira/8.2.0/Dockerfile.jdk11 new file mode 100644 index 000000000..6bab33843 --- /dev/null +++ b/atlassian/jira/8.2.0/Dockerfile.jdk11 @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=8.2.0 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/8.2.1/Dockerfile.jdk11 b/atlassian/jira/8.2.1/Dockerfile.jdk11 new file mode 100644 index 000000000..f1dc5bd51 --- /dev/null +++ b/atlassian/jira/8.2.1/Dockerfile.jdk11 @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=8.2.1 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/8.2.2/Dockerfile.jdk11 b/atlassian/jira/8.2.2/Dockerfile.jdk11 new file mode 100644 index 000000000..eb09f592e --- /dev/null +++ b/atlassian/jira/8.2.2/Dockerfile.jdk11 @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=8.2.2 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/8.2.3/Dockerfile.jdk11 b/atlassian/jira/8.2.3/Dockerfile.jdk11 new file mode 100644 index 000000000..5d85db334 --- /dev/null +++ b/atlassian/jira/8.2.3/Dockerfile.jdk11 @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=8.2.3 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/8.2.4/Dockerfile.jdk11 b/atlassian/jira/8.2.4/Dockerfile.jdk11 new file mode 100644 index 000000000..fe86295f7 --- /dev/null +++ b/atlassian/jira/8.2.4/Dockerfile.jdk11 @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=8.2.4 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/8.2.5/Dockerfile.jdk11 b/atlassian/jira/8.2.5/Dockerfile.jdk11 new file mode 100644 index 000000000..d6498ec49 --- /dev/null +++ b/atlassian/jira/8.2.5/Dockerfile.jdk11 @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=8.2.5 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/8.2.6/Dockerfile.jdk11 b/atlassian/jira/8.2.6/Dockerfile.jdk11 new file mode 100644 index 000000000..74207d383 --- /dev/null +++ b/atlassian/jira/8.2.6/Dockerfile.jdk11 @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=8.2.6 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/8.3.0/Dockerfile.jdk11 b/atlassian/jira/8.3.0/Dockerfile.jdk11 new file mode 100644 index 000000000..510cccac8 --- /dev/null +++ b/atlassian/jira/8.3.0/Dockerfile.jdk11 @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=8.3.0 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/8.3.1/Dockerfile.jdk11 b/atlassian/jira/8.3.1/Dockerfile.jdk11 new file mode 100644 index 000000000..ba2aaf577 --- /dev/null +++ b/atlassian/jira/8.3.1/Dockerfile.jdk11 @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=8.3.1 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/8.3.2/Dockerfile.jdk11 b/atlassian/jira/8.3.2/Dockerfile.jdk11 new file mode 100644 index 000000000..23d3e6fd8 --- /dev/null +++ b/atlassian/jira/8.3.2/Dockerfile.jdk11 @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=8.3.2 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/8.3.3/Dockerfile.jdk11 b/atlassian/jira/8.3.3/Dockerfile.jdk11 new file mode 100644 index 000000000..2ad7f24b0 --- /dev/null +++ b/atlassian/jira/8.3.3/Dockerfile.jdk11 @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=8.3.3 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/8.3.4/Dockerfile.jdk11 b/atlassian/jira/8.3.4/Dockerfile.jdk11 new file mode 100644 index 000000000..cb9199c1e --- /dev/null +++ b/atlassian/jira/8.3.4/Dockerfile.jdk11 @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=8.3.4 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/8.3.5/Dockerfile.jdk11 b/atlassian/jira/8.3.5/Dockerfile.jdk11 new file mode 100644 index 000000000..40f571e6f --- /dev/null +++ b/atlassian/jira/8.3.5/Dockerfile.jdk11 @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=8.3.5 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/8.4.0/Dockerfile.jdk11 b/atlassian/jira/8.4.0/Dockerfile.jdk11 new file mode 100644 index 000000000..575fdcbd3 --- /dev/null +++ b/atlassian/jira/8.4.0/Dockerfile.jdk11 @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=8.4.0 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/8.4.1/Dockerfile.jdk11 b/atlassian/jira/8.4.1/Dockerfile.jdk11 new file mode 100644 index 000000000..a0be846db --- /dev/null +++ b/atlassian/jira/8.4.1/Dockerfile.jdk11 @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=8.4.1 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/8.4.2/Dockerfile.jdk11 b/atlassian/jira/8.4.2/Dockerfile.jdk11 new file mode 100644 index 000000000..b39613392 --- /dev/null +++ b/atlassian/jira/8.4.2/Dockerfile.jdk11 @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=8.4.2 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/8.4.3/Dockerfile.jdk11 b/atlassian/jira/8.4.3/Dockerfile.jdk11 new file mode 100644 index 000000000..d76d43725 --- /dev/null +++ b/atlassian/jira/8.4.3/Dockerfile.jdk11 @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=8.4.3 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/8.5.0/Dockerfile.jdk11 b/atlassian/jira/8.5.0/Dockerfile.jdk11 new file mode 100644 index 000000000..f43659f70 --- /dev/null +++ b/atlassian/jira/8.5.0/Dockerfile.jdk11 @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=8.5.0 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/8.5.1/Dockerfile.jdk11 b/atlassian/jira/8.5.1/Dockerfile.jdk11 new file mode 100644 index 000000000..c03ba4349 --- /dev/null +++ b/atlassian/jira/8.5.1/Dockerfile.jdk11 @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=8.5.1 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/8.5.2/Dockerfile.jdk11 b/atlassian/jira/8.5.2/Dockerfile.jdk11 new file mode 100644 index 000000000..b58a1df0f --- /dev/null +++ b/atlassian/jira/8.5.2/Dockerfile.jdk11 @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=8.5.2 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/8.5.3/Dockerfile.jdk11 b/atlassian/jira/8.5.3/Dockerfile.jdk11 new file mode 100644 index 000000000..30bc99420 --- /dev/null +++ b/atlassian/jira/8.5.3/Dockerfile.jdk11 @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=8.5.3 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/8.6.0/Dockerfile.jdk11 b/atlassian/jira/8.6.0/Dockerfile.jdk11 new file mode 100644 index 000000000..be0f685fb --- /dev/null +++ b/atlassian/jira/8.6.0/Dockerfile.jdk11 @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=8.6.0 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp diff --git a/atlassian/jira/8.6.1/Dockerfile.jdk11 b/atlassian/jira/8.6.1/Dockerfile.jdk11 new file mode 100644 index 000000000..6902e4045 --- /dev/null +++ b/atlassian/jira/8.6.1/Dockerfile.jdk11 @@ -0,0 +1,47 @@ +FROM epicmorg/prod:jdk11 +LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" +ARG DEBIAN_FRONTEND=noninteractive + +################################################################## +# ARGuments +################################################################## +ARG JIRA_VERSION=8.6.1 +ARG DOWNLOAD_URL=https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-${JIRA_VERSION}.tar.gz + +################################################################## +# Setup +################################################################## +ENV RUN_USER daemon +ENV RUN_GROUP daemon + +# https://confluence.atlassian.com/display/JSERVERM/Important+directories+and+files +ENV JIRA_HOME /var/atlassian/application-data/jira +ENV JIRA_INSTALL_DIR /opt/atlassian/jira + +VOLUME ["${JIRA_HOME}"] +WORKDIR $JIRA_HOME + +# Expose HTTP port +EXPOSE 8080 + +################################################################## +# Installing +################################################################## +RUN mkdir -p ${JIRA_INSTALL_DIR} \ + && curl -L ${DOWNLOAD_URL} | tar -xz --strip-components=1 -C "$JIRA_INSTALL_DIR" \ + && chown -R ${RUN_USER}:${RUN_GROUP} ${JIRA_INSTALL_DIR}/ \ + && sed -i -e 's/^JVM_SUPPORT_RECOMMENDED_ARGS=""$/: \${JVM_SUPPORT_RECOMMENDED_ARGS:=""}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/^JVM_\(.*\)_MEMORY="\(.*\)"$/: \${JVM_\1_MEMORY:=\2}/g' ${JIRA_INSTALL_DIR}/bin/setenv.sh \ + && sed -i -e 's/grep "java version"/grep -E "(openjdk|java) version"/g' ${JIRA_INSTALL_DIR}/bin/check-java.sh \ + && sed -i -e 's/port="8080"/port="8080" secure="${catalinaConnectorSecure}" scheme="${catalinaConnectorScheme}" proxyName="${catalinaConnectorProxyName}" proxyPort="${catalinaConnectorProxyPort}"/' ${JIRA_INSTALL_DIR}/conf/server.xml && \ + + update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \ + apt clean -y && \ + apt autoclean -y && \ + rm -rfv /var/lib/apt/lists/* && \ + rm -rfv /var/cache/apt/archives/*.deb + +CMD ["/entrypoint.sh", "-fg"] +ENTRYPOINT ["/usr/bin/tini", "--"] +COPY entrypoint.sh /entrypoint.sh +COPY . /tmp From eb94a56d98c0d312dae3fac614517e8229004be3 Mon Sep 17 00:00:00 2001 From: stam Date: Fri, 17 Jan 2020 00:04:14 +0300 Subject: [PATCH 45/50] bitbucket rolled back to jdk8 in main images jkd11 will be via separeted tag --- atlassian/bitbucket/6.0.0/Dockerfile | 2 +- atlassian/bitbucket/6.0.1/Dockerfile | 2 +- atlassian/bitbucket/6.0.10/Dockerfile | 2 +- atlassian/bitbucket/6.0.11/Dockerfile | 2 +- atlassian/bitbucket/6.0.2/Dockerfile | 2 +- atlassian/bitbucket/6.0.3/Dockerfile | 2 +- atlassian/bitbucket/6.0.4/Dockerfile | 2 +- atlassian/bitbucket/6.0.5/Dockerfile | 2 +- atlassian/bitbucket/6.0.6/Dockerfile | 2 +- atlassian/bitbucket/6.0.7/Dockerfile | 2 +- atlassian/bitbucket/6.0.9/Dockerfile | 2 +- atlassian/bitbucket/6.1.0/Dockerfile | 2 +- atlassian/bitbucket/6.1.1/Dockerfile | 2 +- atlassian/bitbucket/6.1.2/Dockerfile | 2 +- atlassian/bitbucket/6.1.3/Dockerfile | 2 +- atlassian/bitbucket/6.1.4/Dockerfile | 2 +- atlassian/bitbucket/6.1.5/Dockerfile | 2 +- atlassian/bitbucket/6.1.6/Dockerfile | 2 +- atlassian/bitbucket/6.1.7/Dockerfile | 2 +- atlassian/bitbucket/6.1.8/Dockerfile | 2 +- atlassian/bitbucket/6.1.9/Dockerfile | 2 +- atlassian/bitbucket/6.10.0/Dockerfile | 2 +- atlassian/bitbucket/6.2.0/Dockerfile | 2 +- atlassian/bitbucket/6.2.1/Dockerfile | 2 +- atlassian/bitbucket/6.2.2/Dockerfile | 2 +- atlassian/bitbucket/6.2.3/Dockerfile | 2 +- atlassian/bitbucket/6.2.4/Dockerfile | 2 +- atlassian/bitbucket/6.2.5/Dockerfile | 2 +- atlassian/bitbucket/6.2.6/Dockerfile | 2 +- atlassian/bitbucket/6.2.7/Dockerfile | 2 +- atlassian/bitbucket/6.3.0/Dockerfile | 2 +- atlassian/bitbucket/6.3.1/Dockerfile | 2 +- atlassian/bitbucket/6.3.2/Dockerfile | 2 +- atlassian/bitbucket/6.3.3/Dockerfile | 2 +- atlassian/bitbucket/6.3.4/Dockerfile | 2 +- atlassian/bitbucket/6.3.5/Dockerfile | 2 +- atlassian/bitbucket/6.3.6/Dockerfile | 2 +- atlassian/bitbucket/6.4.0/Dockerfile | 2 +- atlassian/bitbucket/6.4.1/Dockerfile | 2 +- atlassian/bitbucket/6.4.2/Dockerfile | 2 +- atlassian/bitbucket/6.4.3/Dockerfile | 2 +- atlassian/bitbucket/6.4.4/Dockerfile | 2 +- atlassian/bitbucket/6.5.0/Dockerfile | 2 +- atlassian/bitbucket/6.5.1/Dockerfile | 2 +- atlassian/bitbucket/6.5.2/Dockerfile | 2 +- atlassian/bitbucket/6.5.3/Dockerfile | 2 +- atlassian/bitbucket/6.6.0/Dockerfile | 2 +- atlassian/bitbucket/6.6.1/Dockerfile | 2 +- atlassian/bitbucket/6.6.2/Dockerfile | 2 +- atlassian/bitbucket/6.6.3/Dockerfile | 2 +- atlassian/bitbucket/6.7.0/Dockerfile | 2 +- atlassian/bitbucket/6.7.1/Dockerfile | 2 +- atlassian/bitbucket/6.7.2/Dockerfile | 2 +- atlassian/bitbucket/6.7.3/Dockerfile | 2 +- atlassian/bitbucket/6.8.0/Dockerfile | 2 +- atlassian/bitbucket/6.8.1/Dockerfile | 2 +- atlassian/bitbucket/6.8.2/Dockerfile | 2 +- atlassian/bitbucket/6.9.0/Dockerfile | 2 +- atlassian/bitbucket/6.9.1/Dockerfile | 2 +- 59 files changed, 59 insertions(+), 59 deletions(-) diff --git a/atlassian/bitbucket/6.0.0/Dockerfile b/atlassian/bitbucket/6.0.0/Dockerfile index e2d740f96..c0937af82 100644 --- a/atlassian/bitbucket/6.0.0/Dockerfile +++ b/atlassian/bitbucket/6.0.0/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.0.1/Dockerfile b/atlassian/bitbucket/6.0.1/Dockerfile index 062d04b0a..22944df50 100644 --- a/atlassian/bitbucket/6.0.1/Dockerfile +++ b/atlassian/bitbucket/6.0.1/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.0.10/Dockerfile b/atlassian/bitbucket/6.0.10/Dockerfile index 7e46dc3d5..ed470780b 100644 --- a/atlassian/bitbucket/6.0.10/Dockerfile +++ b/atlassian/bitbucket/6.0.10/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.0.11/Dockerfile b/atlassian/bitbucket/6.0.11/Dockerfile index ff9ce227c..162b6da0c 100644 --- a/atlassian/bitbucket/6.0.11/Dockerfile +++ b/atlassian/bitbucket/6.0.11/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.0.2/Dockerfile b/atlassian/bitbucket/6.0.2/Dockerfile index b2787c46d..1e019fed0 100644 --- a/atlassian/bitbucket/6.0.2/Dockerfile +++ b/atlassian/bitbucket/6.0.2/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.0.3/Dockerfile b/atlassian/bitbucket/6.0.3/Dockerfile index b344ab06c..6b24afb58 100644 --- a/atlassian/bitbucket/6.0.3/Dockerfile +++ b/atlassian/bitbucket/6.0.3/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.0.4/Dockerfile b/atlassian/bitbucket/6.0.4/Dockerfile index caefc5aff..9b97933bb 100644 --- a/atlassian/bitbucket/6.0.4/Dockerfile +++ b/atlassian/bitbucket/6.0.4/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.0.5/Dockerfile b/atlassian/bitbucket/6.0.5/Dockerfile index 38859b28e..364a70c89 100644 --- a/atlassian/bitbucket/6.0.5/Dockerfile +++ b/atlassian/bitbucket/6.0.5/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.0.6/Dockerfile b/atlassian/bitbucket/6.0.6/Dockerfile index 6dcc7175d..062d48a5a 100644 --- a/atlassian/bitbucket/6.0.6/Dockerfile +++ b/atlassian/bitbucket/6.0.6/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.0.7/Dockerfile b/atlassian/bitbucket/6.0.7/Dockerfile index c51b46a3f..da0774d02 100644 --- a/atlassian/bitbucket/6.0.7/Dockerfile +++ b/atlassian/bitbucket/6.0.7/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.0.9/Dockerfile b/atlassian/bitbucket/6.0.9/Dockerfile index 96aa8d176..1635b2060 100644 --- a/atlassian/bitbucket/6.0.9/Dockerfile +++ b/atlassian/bitbucket/6.0.9/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.1.0/Dockerfile b/atlassian/bitbucket/6.1.0/Dockerfile index 3d877d7dc..2fd77161a 100644 --- a/atlassian/bitbucket/6.1.0/Dockerfile +++ b/atlassian/bitbucket/6.1.0/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.1.1/Dockerfile b/atlassian/bitbucket/6.1.1/Dockerfile index 7cd3f13f1..8d13a007e 100644 --- a/atlassian/bitbucket/6.1.1/Dockerfile +++ b/atlassian/bitbucket/6.1.1/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.1.2/Dockerfile b/atlassian/bitbucket/6.1.2/Dockerfile index 34a9a0c08..45f5d4afe 100644 --- a/atlassian/bitbucket/6.1.2/Dockerfile +++ b/atlassian/bitbucket/6.1.2/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.1.3/Dockerfile b/atlassian/bitbucket/6.1.3/Dockerfile index 43807d731..4ee74f3b9 100644 --- a/atlassian/bitbucket/6.1.3/Dockerfile +++ b/atlassian/bitbucket/6.1.3/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.1.4/Dockerfile b/atlassian/bitbucket/6.1.4/Dockerfile index e4a2add7e..cfb7a9fc9 100644 --- a/atlassian/bitbucket/6.1.4/Dockerfile +++ b/atlassian/bitbucket/6.1.4/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.1.5/Dockerfile b/atlassian/bitbucket/6.1.5/Dockerfile index 40ca9f3d1..2e51f4fed 100644 --- a/atlassian/bitbucket/6.1.5/Dockerfile +++ b/atlassian/bitbucket/6.1.5/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.1.6/Dockerfile b/atlassian/bitbucket/6.1.6/Dockerfile index f136b0930..fe50047e6 100644 --- a/atlassian/bitbucket/6.1.6/Dockerfile +++ b/atlassian/bitbucket/6.1.6/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.1.7/Dockerfile b/atlassian/bitbucket/6.1.7/Dockerfile index e1d78352a..a7bd4961a 100644 --- a/atlassian/bitbucket/6.1.7/Dockerfile +++ b/atlassian/bitbucket/6.1.7/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.1.8/Dockerfile b/atlassian/bitbucket/6.1.8/Dockerfile index 29317a8ad..92aa34b0f 100644 --- a/atlassian/bitbucket/6.1.8/Dockerfile +++ b/atlassian/bitbucket/6.1.8/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.1.9/Dockerfile b/atlassian/bitbucket/6.1.9/Dockerfile index c30f7a6ee..4ed773870 100644 --- a/atlassian/bitbucket/6.1.9/Dockerfile +++ b/atlassian/bitbucket/6.1.9/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.10.0/Dockerfile b/atlassian/bitbucket/6.10.0/Dockerfile index 053caa0ff..e4dd232d7 100644 --- a/atlassian/bitbucket/6.10.0/Dockerfile +++ b/atlassian/bitbucket/6.10.0/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.2.0/Dockerfile b/atlassian/bitbucket/6.2.0/Dockerfile index b54e88165..8cb993329 100644 --- a/atlassian/bitbucket/6.2.0/Dockerfile +++ b/atlassian/bitbucket/6.2.0/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.2.1/Dockerfile b/atlassian/bitbucket/6.2.1/Dockerfile index e75ca5e43..de725b5d0 100644 --- a/atlassian/bitbucket/6.2.1/Dockerfile +++ b/atlassian/bitbucket/6.2.1/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.2.2/Dockerfile b/atlassian/bitbucket/6.2.2/Dockerfile index b6a53aa0a..e406d5892 100644 --- a/atlassian/bitbucket/6.2.2/Dockerfile +++ b/atlassian/bitbucket/6.2.2/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.2.3/Dockerfile b/atlassian/bitbucket/6.2.3/Dockerfile index ca22f13d7..2c1967231 100644 --- a/atlassian/bitbucket/6.2.3/Dockerfile +++ b/atlassian/bitbucket/6.2.3/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.2.4/Dockerfile b/atlassian/bitbucket/6.2.4/Dockerfile index 2b6bc29f3..49e813fb2 100644 --- a/atlassian/bitbucket/6.2.4/Dockerfile +++ b/atlassian/bitbucket/6.2.4/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.2.5/Dockerfile b/atlassian/bitbucket/6.2.5/Dockerfile index 5ebb396e4..f7efdd14a 100644 --- a/atlassian/bitbucket/6.2.5/Dockerfile +++ b/atlassian/bitbucket/6.2.5/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.2.6/Dockerfile b/atlassian/bitbucket/6.2.6/Dockerfile index 8530e21ae..74f08fab5 100644 --- a/atlassian/bitbucket/6.2.6/Dockerfile +++ b/atlassian/bitbucket/6.2.6/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.2.7/Dockerfile b/atlassian/bitbucket/6.2.7/Dockerfile index 8ebe06e9a..6543d37cb 100644 --- a/atlassian/bitbucket/6.2.7/Dockerfile +++ b/atlassian/bitbucket/6.2.7/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.3.0/Dockerfile b/atlassian/bitbucket/6.3.0/Dockerfile index 8f9acef31..9e6c47d4c 100644 --- a/atlassian/bitbucket/6.3.0/Dockerfile +++ b/atlassian/bitbucket/6.3.0/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.3.1/Dockerfile b/atlassian/bitbucket/6.3.1/Dockerfile index 346601dd1..bcb7b8f4e 100644 --- a/atlassian/bitbucket/6.3.1/Dockerfile +++ b/atlassian/bitbucket/6.3.1/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.3.2/Dockerfile b/atlassian/bitbucket/6.3.2/Dockerfile index 7b26a0df2..64078dd02 100644 --- a/atlassian/bitbucket/6.3.2/Dockerfile +++ b/atlassian/bitbucket/6.3.2/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.3.3/Dockerfile b/atlassian/bitbucket/6.3.3/Dockerfile index 5e4e3cc83..8e9d26dce 100644 --- a/atlassian/bitbucket/6.3.3/Dockerfile +++ b/atlassian/bitbucket/6.3.3/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.3.4/Dockerfile b/atlassian/bitbucket/6.3.4/Dockerfile index 9ca261f0d..babcd3d9f 100644 --- a/atlassian/bitbucket/6.3.4/Dockerfile +++ b/atlassian/bitbucket/6.3.4/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.3.5/Dockerfile b/atlassian/bitbucket/6.3.5/Dockerfile index cdfc1eca5..c3f35d451 100644 --- a/atlassian/bitbucket/6.3.5/Dockerfile +++ b/atlassian/bitbucket/6.3.5/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.3.6/Dockerfile b/atlassian/bitbucket/6.3.6/Dockerfile index 0c69fb20f..23786a79d 100644 --- a/atlassian/bitbucket/6.3.6/Dockerfile +++ b/atlassian/bitbucket/6.3.6/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.4.0/Dockerfile b/atlassian/bitbucket/6.4.0/Dockerfile index 1e0821e46..a1ab398b5 100644 --- a/atlassian/bitbucket/6.4.0/Dockerfile +++ b/atlassian/bitbucket/6.4.0/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.4.1/Dockerfile b/atlassian/bitbucket/6.4.1/Dockerfile index 6b25e0704..b55dae250 100644 --- a/atlassian/bitbucket/6.4.1/Dockerfile +++ b/atlassian/bitbucket/6.4.1/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.4.2/Dockerfile b/atlassian/bitbucket/6.4.2/Dockerfile index d8caaa055..5daadb343 100644 --- a/atlassian/bitbucket/6.4.2/Dockerfile +++ b/atlassian/bitbucket/6.4.2/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.4.3/Dockerfile b/atlassian/bitbucket/6.4.3/Dockerfile index b9af28c9a..d5b59ddd1 100644 --- a/atlassian/bitbucket/6.4.3/Dockerfile +++ b/atlassian/bitbucket/6.4.3/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.4.4/Dockerfile b/atlassian/bitbucket/6.4.4/Dockerfile index 048852cdc..d49f0ba50 100644 --- a/atlassian/bitbucket/6.4.4/Dockerfile +++ b/atlassian/bitbucket/6.4.4/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.5.0/Dockerfile b/atlassian/bitbucket/6.5.0/Dockerfile index 75c4d0dc3..a311e75f4 100644 --- a/atlassian/bitbucket/6.5.0/Dockerfile +++ b/atlassian/bitbucket/6.5.0/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.5.1/Dockerfile b/atlassian/bitbucket/6.5.1/Dockerfile index 93a21cf28..d9b555a36 100644 --- a/atlassian/bitbucket/6.5.1/Dockerfile +++ b/atlassian/bitbucket/6.5.1/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.5.2/Dockerfile b/atlassian/bitbucket/6.5.2/Dockerfile index 3b08acf93..4c53c5e1b 100644 --- a/atlassian/bitbucket/6.5.2/Dockerfile +++ b/atlassian/bitbucket/6.5.2/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.5.3/Dockerfile b/atlassian/bitbucket/6.5.3/Dockerfile index 7c4247ef6..b480f2fd9 100644 --- a/atlassian/bitbucket/6.5.3/Dockerfile +++ b/atlassian/bitbucket/6.5.3/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.6.0/Dockerfile b/atlassian/bitbucket/6.6.0/Dockerfile index 599124d29..0a0869ca8 100644 --- a/atlassian/bitbucket/6.6.0/Dockerfile +++ b/atlassian/bitbucket/6.6.0/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.6.1/Dockerfile b/atlassian/bitbucket/6.6.1/Dockerfile index c459bc9a4..c19ed0be9 100644 --- a/atlassian/bitbucket/6.6.1/Dockerfile +++ b/atlassian/bitbucket/6.6.1/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.6.2/Dockerfile b/atlassian/bitbucket/6.6.2/Dockerfile index e0db4fc35..bc91d8570 100644 --- a/atlassian/bitbucket/6.6.2/Dockerfile +++ b/atlassian/bitbucket/6.6.2/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.6.3/Dockerfile b/atlassian/bitbucket/6.6.3/Dockerfile index 03bd57405..28adc3c67 100644 --- a/atlassian/bitbucket/6.6.3/Dockerfile +++ b/atlassian/bitbucket/6.6.3/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.7.0/Dockerfile b/atlassian/bitbucket/6.7.0/Dockerfile index 7e422c1eb..d71281ff0 100644 --- a/atlassian/bitbucket/6.7.0/Dockerfile +++ b/atlassian/bitbucket/6.7.0/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.7.1/Dockerfile b/atlassian/bitbucket/6.7.1/Dockerfile index cd2d58f0b..6b4075026 100644 --- a/atlassian/bitbucket/6.7.1/Dockerfile +++ b/atlassian/bitbucket/6.7.1/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.7.2/Dockerfile b/atlassian/bitbucket/6.7.2/Dockerfile index eb4e08c46..29eadf9f8 100644 --- a/atlassian/bitbucket/6.7.2/Dockerfile +++ b/atlassian/bitbucket/6.7.2/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.7.3/Dockerfile b/atlassian/bitbucket/6.7.3/Dockerfile index fd9f18206..56502b88f 100644 --- a/atlassian/bitbucket/6.7.3/Dockerfile +++ b/atlassian/bitbucket/6.7.3/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.8.0/Dockerfile b/atlassian/bitbucket/6.8.0/Dockerfile index 2106400bf..e9cee63e8 100644 --- a/atlassian/bitbucket/6.8.0/Dockerfile +++ b/atlassian/bitbucket/6.8.0/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.8.1/Dockerfile b/atlassian/bitbucket/6.8.1/Dockerfile index 239ce3eaa..54425164b 100644 --- a/atlassian/bitbucket/6.8.1/Dockerfile +++ b/atlassian/bitbucket/6.8.1/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.8.2/Dockerfile b/atlassian/bitbucket/6.8.2/Dockerfile index c10291b6a..7d45cb9de 100644 --- a/atlassian/bitbucket/6.8.2/Dockerfile +++ b/atlassian/bitbucket/6.8.2/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.9.0/Dockerfile b/atlassian/bitbucket/6.9.0/Dockerfile index a3e364a29..0a8d4a17f 100644 --- a/atlassian/bitbucket/6.9.0/Dockerfile +++ b/atlassian/bitbucket/6.9.0/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/bitbucket/6.9.1/Dockerfile b/atlassian/bitbucket/6.9.1/Dockerfile index aec1fd5d7..d50d90e16 100644 --- a/atlassian/bitbucket/6.9.1/Dockerfile +++ b/atlassian/bitbucket/6.9.1/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive From 5539ac06fb377e997a4a73e2d26d3c3f95548747 Mon Sep 17 00:00:00 2001 From: stam Date: Fri, 17 Jan 2020 00:05:00 +0300 Subject: [PATCH 46/50] jira rolled back to jdk8 in main images jkd11 will be via separeted tag --- atlassian/jira/8.2.0/Dockerfile | 2 +- atlassian/jira/8.2.1/Dockerfile | 2 +- atlassian/jira/8.2.2/Dockerfile | 2 +- atlassian/jira/8.2.3/Dockerfile | 2 +- atlassian/jira/8.2.4/Dockerfile | 2 +- atlassian/jira/8.2.5/Dockerfile | 2 +- atlassian/jira/8.2.6/Dockerfile | 2 +- atlassian/jira/8.3.0/Dockerfile | 2 +- atlassian/jira/8.3.1/Dockerfile | 2 +- atlassian/jira/8.3.2/Dockerfile | 2 +- atlassian/jira/8.3.3/Dockerfile | 2 +- atlassian/jira/8.3.4/Dockerfile | 2 +- atlassian/jira/8.3.5/Dockerfile | 2 +- atlassian/jira/8.4.0/Dockerfile | 2 +- atlassian/jira/8.4.1/Dockerfile | 2 +- atlassian/jira/8.4.2/Dockerfile | 2 +- atlassian/jira/8.4.3/Dockerfile | 2 +- atlassian/jira/8.5.0/Dockerfile | 2 +- atlassian/jira/8.5.1/Dockerfile | 2 +- atlassian/jira/8.5.2/Dockerfile | 2 +- atlassian/jira/8.5.3/Dockerfile | 2 +- atlassian/jira/8.6.0/Dockerfile | 2 +- atlassian/jira/8.6.1/Dockerfile | 2 +- 23 files changed, 23 insertions(+), 23 deletions(-) diff --git a/atlassian/jira/8.2.0/Dockerfile b/atlassian/jira/8.2.0/Dockerfile index 6bab33843..53e0b84be 100644 --- a/atlassian/jira/8.2.0/Dockerfile +++ b/atlassian/jira/8.2.0/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/jira/8.2.1/Dockerfile b/atlassian/jira/8.2.1/Dockerfile index f1dc5bd51..2bcd39287 100644 --- a/atlassian/jira/8.2.1/Dockerfile +++ b/atlassian/jira/8.2.1/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/jira/8.2.2/Dockerfile b/atlassian/jira/8.2.2/Dockerfile index eb09f592e..1ad98368d 100644 --- a/atlassian/jira/8.2.2/Dockerfile +++ b/atlassian/jira/8.2.2/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/jira/8.2.3/Dockerfile b/atlassian/jira/8.2.3/Dockerfile index 5d85db334..7b22fae69 100644 --- a/atlassian/jira/8.2.3/Dockerfile +++ b/atlassian/jira/8.2.3/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/jira/8.2.4/Dockerfile b/atlassian/jira/8.2.4/Dockerfile index fe86295f7..bb0bf7d45 100644 --- a/atlassian/jira/8.2.4/Dockerfile +++ b/atlassian/jira/8.2.4/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/jira/8.2.5/Dockerfile b/atlassian/jira/8.2.5/Dockerfile index d6498ec49..2f741b295 100644 --- a/atlassian/jira/8.2.5/Dockerfile +++ b/atlassian/jira/8.2.5/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/jira/8.2.6/Dockerfile b/atlassian/jira/8.2.6/Dockerfile index 74207d383..6c52750a8 100644 --- a/atlassian/jira/8.2.6/Dockerfile +++ b/atlassian/jira/8.2.6/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/jira/8.3.0/Dockerfile b/atlassian/jira/8.3.0/Dockerfile index 510cccac8..6918c3f1f 100644 --- a/atlassian/jira/8.3.0/Dockerfile +++ b/atlassian/jira/8.3.0/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/jira/8.3.1/Dockerfile b/atlassian/jira/8.3.1/Dockerfile index ba2aaf577..45123d298 100644 --- a/atlassian/jira/8.3.1/Dockerfile +++ b/atlassian/jira/8.3.1/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/jira/8.3.2/Dockerfile b/atlassian/jira/8.3.2/Dockerfile index 23d3e6fd8..8ef1bc261 100644 --- a/atlassian/jira/8.3.2/Dockerfile +++ b/atlassian/jira/8.3.2/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/jira/8.3.3/Dockerfile b/atlassian/jira/8.3.3/Dockerfile index 2ad7f24b0..55ec899e1 100644 --- a/atlassian/jira/8.3.3/Dockerfile +++ b/atlassian/jira/8.3.3/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/jira/8.3.4/Dockerfile b/atlassian/jira/8.3.4/Dockerfile index cb9199c1e..3bd48bf31 100644 --- a/atlassian/jira/8.3.4/Dockerfile +++ b/atlassian/jira/8.3.4/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/jira/8.3.5/Dockerfile b/atlassian/jira/8.3.5/Dockerfile index 40f571e6f..6e2cdb970 100644 --- a/atlassian/jira/8.3.5/Dockerfile +++ b/atlassian/jira/8.3.5/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/jira/8.4.0/Dockerfile b/atlassian/jira/8.4.0/Dockerfile index 575fdcbd3..b4d523351 100644 --- a/atlassian/jira/8.4.0/Dockerfile +++ b/atlassian/jira/8.4.0/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/jira/8.4.1/Dockerfile b/atlassian/jira/8.4.1/Dockerfile index a0be846db..901adc69e 100644 --- a/atlassian/jira/8.4.1/Dockerfile +++ b/atlassian/jira/8.4.1/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/jira/8.4.2/Dockerfile b/atlassian/jira/8.4.2/Dockerfile index b39613392..2497ee702 100644 --- a/atlassian/jira/8.4.2/Dockerfile +++ b/atlassian/jira/8.4.2/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/jira/8.4.3/Dockerfile b/atlassian/jira/8.4.3/Dockerfile index d76d43725..52f582346 100644 --- a/atlassian/jira/8.4.3/Dockerfile +++ b/atlassian/jira/8.4.3/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/jira/8.5.0/Dockerfile b/atlassian/jira/8.5.0/Dockerfile index f43659f70..3899c4039 100644 --- a/atlassian/jira/8.5.0/Dockerfile +++ b/atlassian/jira/8.5.0/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/jira/8.5.1/Dockerfile b/atlassian/jira/8.5.1/Dockerfile index c03ba4349..b7aba9776 100644 --- a/atlassian/jira/8.5.1/Dockerfile +++ b/atlassian/jira/8.5.1/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/jira/8.5.2/Dockerfile b/atlassian/jira/8.5.2/Dockerfile index b58a1df0f..4f9d13f41 100644 --- a/atlassian/jira/8.5.2/Dockerfile +++ b/atlassian/jira/8.5.2/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/jira/8.5.3/Dockerfile b/atlassian/jira/8.5.3/Dockerfile index 30bc99420..03d935dfa 100644 --- a/atlassian/jira/8.5.3/Dockerfile +++ b/atlassian/jira/8.5.3/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/jira/8.6.0/Dockerfile b/atlassian/jira/8.6.0/Dockerfile index be0f685fb..94f8835dc 100644 --- a/atlassian/jira/8.6.0/Dockerfile +++ b/atlassian/jira/8.6.0/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive diff --git a/atlassian/jira/8.6.1/Dockerfile b/atlassian/jira/8.6.1/Dockerfile index 6902e4045..947578d9a 100644 --- a/atlassian/jira/8.6.1/Dockerfile +++ b/atlassian/jira/8.6.1/Dockerfile @@ -1,4 +1,4 @@ -FROM epicmorg/prod:jdk11 +FROM epicmorg/prod:jdk8 LABEL maintainer="Atlassian Jira Server Team; EpicMorg DevTeam, developer@epicm.org" ARG DEBIAN_FRONTEND=noninteractive From 9d2d084a429bc6547e82abebd2d5b2ff1d549190 Mon Sep 17 00:00:00 2001 From: stam Date: Fri, 17 Jan 2020 00:50:40 +0300 Subject: [PATCH 47/50] Update README.md --- README.md | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 573aad59f..9bfa300aa 100644 --- a/README.md +++ b/README.md @@ -10,10 +10,16 @@ | Application | Pulls | Notes | ------ | ------ | ------ -| [![Atlassian Bitbucket](https://img.shields.io/badge/Atlassian-Bitbucket-brightgreen.svg?style=popout-square)](https://www.atlassian.com/software/bitbucket/download) | [![](https://img.shields.io/docker/pulls/epicmorg/bitbucket.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/bitbucket/) | Just generic `Atlassian Bitbucket` server. You also can install `datacenter` edition. -| [![Atlassian Confluence](https://img.shields.io/badge/Atlassian-Confluence-brightgreen.svg?style=popout-square)](https://www.atlassian.com/software/confluence/download) | [![](https://img.shields.io/docker/pulls/epicmorg/confluence.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/confluence/) | Just generic `Atlassian Confluence` server. You also can install `datacenter` edition. -| [![Atlassian Jira](https://img.shields.io/badge/Atlassian-Jira-brightgreen.svg?style=popout-square)](https://www.atlassian.com/software/bitbucket/download) | [![](https://img.shields.io/docker/pulls/epicmorg/jira.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/jira/) | Just generic `Atlassian Jira: Softrware` server. You also can install `servicedesk`, `core` or `datacenter` editions. -| ![Nginx Mainline](https://img.shields.io/badge/Nginx%20Mainline-brightgreen.svg?style=popout-square) | [![](https://img.shields.io/docker/pulls/epicmorg/balancer.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/balancer/) | Nginx mainline custom build by [EpicMorg Team](https://github.com/EpicMorg) with http2 support and some modules. -| [![Apache2](https://img.shields.io/badge/Apache2-brightgreen.svg?style=popout-square)](https://deb.sury.org/) | [![](https://img.shields.io/docker/pulls/epicmorg/websites.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/websites/ ) | Latest pure apache2. -| [![php7](https://img.shields.io/badge/php7-brightgreen.svg?style=popout-square)](https://deb.sury.org/) | [![](https://img.shields.io/docker/pulls/epicmorg/websites.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/websites/ ) | php 7.3 custom build by [Ondrej Sury](https://launchpad.net/~ondrej). Component of container above. -| [![nc](https://img.shields.io/badge/nextcloud-brightgreen.svg?style=popout-square)](https://hub.docker.com/_/nextcloud) | [![](https://img.shields.io/docker/pulls/epicmorg/nextcloud.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/nextcloud/ ) | Just fixed `nextcloud:latest` release. +| [![Atlassian Bitbucket](https://img.shields.io/badge/Atlassian%20Bitbucket--brightgreen.svg?style=popout-square)](https://www.atlassian.com/software/bitbucket/download) | [![](https://img.shields.io/docker/pulls/epicmorg/bitbucket.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/bitbucket/) | `Atlassian Bitbucket` server. You also can install `datacenter` edition. +| [![Atlassian Confluence](https://img.shields.io/badge/Atlassian%20Confluence--brightgreen.svg?style=popout-square)](https://www.atlassian.com/software/confluence/download) | [![](https://img.shields.io/docker/pulls/epicmorg/confluence.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/confluence/) | `Atlassian Confluence` server. You also can install `datacenter` edition. +| [![Atlassian Jira](https://img.shields.io/badge/Atlassian%20Jira--brightgreen.svg?style=popout-square)](https://www.atlassian.com/software/jira/download) | [![](https://img.shields.io/docker/pulls/epicmorg/jira.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/jira/) | `Atlassian Jira: Softrware` server. You also can install `servicedesk`, `core` or `datacenter` editions. +| [![Nginx Mainline](https://img.shields.io/badge/Nginx--brightgreen.svg?style=popout-square)](https://nginx.org/en/download.html) | [![](https://img.shields.io/docker/pulls/epicmorg/balancer.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/balancer/) | Mainline custom build by [EpicMorg Team](https://github.com/EpicMorg) with http2 support and some modules. +| [![Apache2](https://img.shields.io/badge/Apache2--brightgreen.svg?style=popout-square)](https://deb.sury.org/) | [![](https://img.shields.io/docker/pulls/epicmorg/websites.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/websites/ ) | Latest pure apache2. +| [![php7](https://img.shields.io/badge/php7--brightgreen.svg?style=popout-square)](https://deb.sury.org/) | [![](https://img.shields.io/docker/pulls/epicmorg/websites.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/websites/ ) | php 7.3 custom build by [Ondrej Sury](https://launchpad.net/~ondrej). Component of container above. +| [![nc](https://img.shields.io/badge/NextCloud--brightgreen.svg?style=popout-square)](https://hub.docker.com/_/nextcloud) | [![](https://img.shields.io/docker/pulls/epicmorg/nextcloud.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/nextcloud/ ) | Fixed `nextcloud:latest` build by [EpicMorg Team](https://github.com/EpicMorg) with benefits. +| [![zabbix-agent](https://img.shields.io/badge/Zabbix%20Agent--brightgreen.svg?style=popout-square)](https://github.com/zabbix/zabbix-docker) | [![](https://img.shields.io/docker/pulls/epicmorg/zabbix-agent.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/zabbix-agent/ ) | Fixed `zabbix/zabbix-agent:ubuntu-latest` build by [EpicMorg Team](https://github.com/EpicMorg) with benefits. +| [![zabbix-server](https://img.shields.io/badge/Zabbix%20Server--brightgreen.svg?style=popout-square)](https://github.com/zabbix/zabbix-docker) | [![](https://img.shields.io/docker/pulls/epicmorg/zabbix-server-mysql.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/zabbix-server-mysql/ ) | Fixed `zabbix/zabbix-server-mysql:ubuntu-latest` build by [EpicMorg Team](https://github.com/EpicMorg) with benefits. +| [![zabbix-web](https://img.shields.io/badge/Zabbix%20Web--brightgreen.svg?style=popout-square)](https://github.com/zabbix/zabbix-docker) | [![](https://img.shields.io/docker/pulls/epicmorg/zabbix-web-apache-mysql.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/zabbix-web-apache-mysql/ ) | Fixed `zabbix/zabbix-web-apache-mysql:ubuntu-latest` build by [EpicMorg Team](https://github.com/EpicMorg) with benefits. +| [![zabbix-java-gateway](https://img.shields.io/badge/Zabbix%20JavaGW--brightgreen.svg?style=popout-square)](https://github.com/zabbix/zabbix-docker) | [![](https://img.shields.io/docker/pulls/epicmorg/zabbix-java-gateway.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/zabbix-java-gateway/ ) | Fixed `zabbix/zabbix-java-gateway:ubuntu-latest` build by [EpicMorg Team](https://github.com/EpicMorg) with benefits. +| [![teamcity-agent](https://img.shields.io/badge/TeamCity%20Agent--brightgreen.svg?style=popout-square)](https://github.com/JetBrains/teamcity-docker-agent) | [![](https://img.shields.io/docker/pulls/epicmorg/teamcity-agent.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/teamcity-agent/ ) | Custom build by [EpicMorg Team](https://github.com/EpicMorg) with benefits. +| [![qbittorrent](https://img.shields.io/badge/qBittorrent--brightgreen.svg?style=popout-square)](https://github.com/qbittorrent/qBittorrent) | [![](https://img.shields.io/docker/pulls/epicmorg/qbittorrent.svg?style=popout-square)](https://hub.docker.com/r/epicmorg/qbittorrent/ ) | Custom build by [EpicMorg Team](https://github.com/EpicMorg) with benefits. From 361a867f0805b5de6a907ccc078368ccaef2e774 Mon Sep 17 00:00:00 2001 From: stam Date: Fri, 17 Jan 2020 01:27:22 +0300 Subject: [PATCH 48/50] separated jdk8 and jdk11 in travis.ci --- .travis.yml | 212 +++++++++++++++++++++++++++++++++++++++++++++------ CHANGELOG.md | 1 + 2 files changed, 189 insertions(+), 24 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8581131f0..ade710812 100644 --- a/.travis.yml +++ b/.travis.yml @@ -149,235 +149,353 @@ matrix: #### Our Bitbucket images ######################################### - - name: Bitbucket 6.0.x + - name: Bitbucket 6.0.x [default jdk8 + tag jdk11] script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/bitbucket:6.0.0 atlassian/bitbucket/6.0.0 - docker push epicmorg/bitbucket:6.0.0 + - docker build --compress -t epicmorg/bitbucket:6.0.0-jdk11 -f atlassian/bitbucket/6.0.0/Dockerfile.jdk11 atlassian/bitbucket/6.0.0 + - docker push epicmorg/bitbucket:6.0.0-jdk11 - docker build --compress -t epicmorg/bitbucket:6.0.1 atlassian/bitbucket/6.0.1 - - docker push epicmorg/bitbucket:6.0.1 + - docker push epicmorg/bitbucket:6.0.1 + - docker build --compress -t epicmorg/bitbucket:6.0.1-jdk11 -f atlassian/bitbucket/6.0.1/Dockerfile.jdk11 atlassian/bitbucket/6.0.1 + - docker push epicmorg/bitbucket:6.0.1-jdk11 - docker build --compress -t epicmorg/bitbucket:6.0.2 atlassian/bitbucket/6.0.2 - docker push epicmorg/bitbucket:6.0.2 + - docker build --compress -t epicmorg/bitbucket:6.0.2-jdk11 -f atlassian/bitbucket/6.0.2/Dockerfile.jdk11 atlassian/bitbucket/6.0.2 + - docker push epicmorg/bitbucket:6.0.2-jdk11 - docker build --compress -t epicmorg/bitbucket:6.0.3 atlassian/bitbucket/6.0.3 - docker push epicmorg/bitbucket:6.0.3 + - docker build --compress -t epicmorg/bitbucket:6.0.3-jdk11 -f atlassian/bitbucket/6.0.3/Dockerfile.jdk11 atlassian/bitbucket/6.0.3 + - docker push epicmorg/bitbucket:6.0.3-jdk11 - docker build --compress -t epicmorg/bitbucket:6.0.4 atlassian/bitbucket/6.0.4 - docker push epicmorg/bitbucket:6.0.4 + - docker build --compress -t epicmorg/bitbucket:6.0.4-jdk11 -f atlassian/bitbucket/6.0.4/Dockerfile.jdk11 atlassian/bitbucket/6.0.4 + - docker push epicmorg/bitbucket:6.0.4-jdk11 - docker build --compress -t epicmorg/bitbucket:6.0.5 atlassian/bitbucket/6.0.5 - docker push epicmorg/bitbucket:6.0.5 + - docker build --compress -t epicmorg/bitbucket:6.0.5-jdk11 -f atlassian/bitbucket/6.0.5/Dockerfile.jdk11 atlassian/bitbucket/6.0.5 + - docker push epicmorg/bitbucket:6.0.5-jdk11 - docker build --compress -t epicmorg/bitbucket:6.0.6 atlassian/bitbucket/6.0.6 - docker push epicmorg/bitbucket:6.0.6 + - docker build --compress -t epicmorg/bitbucket:6.0.6-jdk11 -f atlassian/bitbucket/6.0.6/Dockerfile.jdk11 atlassian/bitbucket/6.0.6 + - docker push epicmorg/bitbucket:6.0.6-jdk11 - docker build --compress -t epicmorg/bitbucket:6.0.7 atlassian/bitbucket/6.0.7 - docker push epicmorg/bitbucket:6.0.7 + - docker build --compress -t epicmorg/bitbucket:6.0.7-jdk11 -f atlassian/bitbucket/6.0.7/Dockerfile.jdk11 atlassian/bitbucket/6.0.7 + - docker push epicmorg/bitbucket:6.0.7-jdk11 - docker build --compress -t epicmorg/bitbucket:6.0.9 atlassian/bitbucket/6.0.9 - docker push epicmorg/bitbucket:6.0.9 + - docker build --compress -t epicmorg/bitbucket:6.0.9-jdk11 -f atlassian/bitbucket/6.0.9/Dockerfile.jdk11 atlassian/bitbucket/6.0.9 + - docker push epicmorg/bitbucket:6.0.9-jdk11 - docker build --compress -t epicmorg/bitbucket:6.0.10 atlassian/bitbucket/6.0.10 - docker push epicmorg/bitbucket:6.0.10 + - docker build --compress -t epicmorg/bitbucket:6.0.10-jdk11 -f atlassian/bitbucket/6.0.10/Dockerfile.jdk11 atlassian/bitbucket/6.0.10 + - docker push epicmorg/bitbucket:6.0.10-jdk11 - docker build --compress -t epicmorg/bitbucket:6.0.11 atlassian/bitbucket/6.0.11 - docker push epicmorg/bitbucket:6.0.11 + - docker build --compress -t epicmorg/bitbucket:6.0.11-jdk11 -f atlassian/bitbucket/6.0.11/Dockerfile.jdk11 atlassian/bitbucket/6.0.11 + - docker push epicmorg/bitbucket:6.0.11-jdk11 ########## - - name: Bitbucket 6.1.x + - name: Bitbucket 6.1.x [default jdk8 + tag jdk11] script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/bitbucket:6.1.0 atlassian/bitbucket/6.1.0 - docker push epicmorg/bitbucket:6.1.0 + - docker build --compress -t epicmorg/bitbucket:6.1.0-jdk11 -f atlassian/bitbucket/6.1.0/Dockerfile.jdk11 atlassian/bitbucket/6.1.0 + - docker push epicmorg/bitbucket:6.1.0-jdk11 - docker build --compress -t epicmorg/bitbucket:6.1.1 atlassian/bitbucket/6.1.1 - docker push epicmorg/bitbucket:6.1.1 + - docker build --compress -t epicmorg/bitbucket:6.1.1-jdk11 -f atlassian/bitbucket/6.1.1/Dockerfile.jdk11 atlassian/bitbucket/6.1.1 + - docker push epicmorg/bitbucket:6.1.1-jdk11 - docker build --compress -t epicmorg/bitbucket:6.1.2 atlassian/bitbucket/6.1.2 - docker push epicmorg/bitbucket:6.1.2 + - docker build --compress -t epicmorg/bitbucket:6.1.2-jdk11 -f atlassian/bitbucket/6.1.2/Dockerfile.jdk11 atlassian/bitbucket/6.1.2 + - docker push epicmorg/bitbucket:6.1.2-jdk11 - docker build --compress -t epicmorg/bitbucket:6.1.3 atlassian/bitbucket/6.1.3 - docker push epicmorg/bitbucket:6.1.3 + - docker build --compress -t epicmorg/bitbucket:6.1.3-jdk11 -f atlassian/bitbucket/6.1.3/Dockerfile.jdk11 atlassian/bitbucket/6.1.3 + - docker push epicmorg/bitbucket:6.1.3-jdk11 - docker build --compress -t epicmorg/bitbucket:6.1.4 atlassian/bitbucket/6.1.4 - docker push epicmorg/bitbucket:6.1.4 + - docker build --compress -t epicmorg/bitbucket:6.1.4-jdk11 -f atlassian/bitbucket/6.1.4/Dockerfile.jdk11 atlassian/bitbucket/6.1.4 + - docker push epicmorg/bitbucket:6.1.4-jdk11 - docker build --compress -t epicmorg/bitbucket:6.1.5 atlassian/bitbucket/6.1.5 - docker push epicmorg/bitbucket:6.1.5 + - docker build --compress -t epicmorg/bitbucket:6.1.5-jdk11 -f atlassian/bitbucket/6.1.5/Dockerfile.jdk11 atlassian/bitbucket/6.1.5 + - docker push epicmorg/bitbucket:6.1.5-jdk11 - docker build --compress -t epicmorg/bitbucket:6.1.6 atlassian/bitbucket/6.1.6 - docker push epicmorg/bitbucket:6.1.6 + - docker build --compress -t epicmorg/bitbucket:6.1.6-jdk11 -f atlassian/bitbucket/6.1.6/Dockerfile.jdk11 atlassian/bitbucket/6.1.6 + - docker push epicmorg/bitbucket:6.1.6-jdk11 - docker build --compress -t epicmorg/bitbucket:6.1.7 atlassian/bitbucket/6.1.7 - docker push epicmorg/bitbucket:6.1.7 + - docker build --compress -t epicmorg/bitbucket:6.1.7-jdk11 -f atlassian/bitbucket/6.1.7/Dockerfile.jdk11 atlassian/bitbucket/6.1.7 + - docker push epicmorg/bitbucket:6.1.7-jdk11 - docker build --compress -t epicmorg/bitbucket:6.1.8 atlassian/bitbucket/6.1.8 - docker push epicmorg/bitbucket:6.1.8 + - docker build --compress -t epicmorg/bitbucket:6.1.8-jdk11 -f atlassian/bitbucket/6.1.8/Dockerfile.jdk11 atlassian/bitbucket/6.1.8 + - docker push epicmorg/bitbucket:6.1.8-jdk11 - docker build --compress -t epicmorg/bitbucket:6.1.9 atlassian/bitbucket/6.1.9 - docker push epicmorg/bitbucket:6.1.9 + - docker build --compress -t epicmorg/bitbucket:6.1.9-jdk11 -f atlassian/bitbucket/6.1.9/Dockerfile.jdk11 atlassian/bitbucket/6.1.9 + - docker push epicmorg/bitbucket:6.1.9-jdk11 ########## - - name: Bitbucket 6.2.x + - name: Bitbucket 6.2.x [default jdk8 + tag jdk11] script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/bitbucket:6.2.0 atlassian/bitbucket/6.2.0 - docker push epicmorg/bitbucket:6.2.0 + - docker build --compress -t epicmorg/bitbucket:6.2.0-jdk11 -f atlassian/bitbucket/6.2.0/Dockerfile.jdk11 atlassian/bitbucket/6.2.0 + - docker push epicmorg/bitbucket:6.2.0-jdk11 - docker build --compress -t epicmorg/bitbucket:6.2.1 atlassian/bitbucket/6.2.1 - docker push epicmorg/bitbucket:6.2.1 + - docker build --compress -t epicmorg/bitbucket:6.2.1-jdk11 -f atlassian/bitbucket/6.2.1/Dockerfile.jdk11 atlassian/bitbucket/6.2.1 + - docker push epicmorg/bitbucket:6.2.1-jdk11 - docker build --compress -t epicmorg/bitbucket:6.2.2 atlassian/bitbucket/6.2.2 - docker push epicmorg/bitbucket:6.2.2 + - docker build --compress -t epicmorg/bitbucket:6.2.2-jdk11 -f atlassian/bitbucket/6.2.2/Dockerfile.jdk11 atlassian/bitbucket/6.2.2 + - docker push epicmorg/bitbucket:6.2.2-jdk11 - docker build --compress -t epicmorg/bitbucket:6.2.3 atlassian/bitbucket/6.2.3 - docker push epicmorg/bitbucket:6.2.3 + - docker build --compress -t epicmorg/bitbucket:6.2.3-jdk11 -f atlassian/bitbucket/6.2.3/Dockerfile.jdk11 atlassian/bitbucket/6.2.3 + - docker push epicmorg/bitbucket:6.2.3-jdk11 - docker build --compress -t epicmorg/bitbucket:6.2.4 atlassian/bitbucket/6.2.4 - docker push epicmorg/bitbucket:6.2.4 + - docker build --compress -t epicmorg/bitbucket:6.2.4-jdk11 -f atlassian/bitbucket/6.2.4/Dockerfile.jdk11 atlassian/bitbucket/6.2.4 + - docker push epicmorg/bitbucket:6.2.4-jdk11 - docker build --compress -t epicmorg/bitbucket:6.2.5 atlassian/bitbucket/6.2.5 - docker push epicmorg/bitbucket:6.2.5 + - docker build --compress -t epicmorg/bitbucket:6.2.5-jdk11 -f atlassian/bitbucket/6.2.5/Dockerfile.jdk11 atlassian/bitbucket/6.2.5 + - docker push epicmorg/bitbucket:6.2.5-jdk11 - docker build --compress -t epicmorg/bitbucket:6.2.6 atlassian/bitbucket/6.2.6 - docker push epicmorg/bitbucket:6.2.6 + - docker build --compress -t epicmorg/bitbucket:6.2.6-jdk11 -f atlassian/bitbucket/6.2.6/Dockerfile.jdk11 atlassian/bitbucket/6.2.6 + - docker push epicmorg/bitbucket:6.2.6-jdk11 - docker build --compress -t epicmorg/bitbucket:6.2.7 atlassian/bitbucket/6.2.7 - docker push epicmorg/bitbucket:6.2.7 + - docker build --compress -t epicmorg/bitbucket:6.2.7-jdk11 -f atlassian/bitbucket/6.2.7/Dockerfile.jdk11 atlassian/bitbucket/6.2.7 + - docker push epicmorg/bitbucket:6.2.7-jdk11 ########## - - name: Bitbucket 6.3.x + - name: Bitbucket 6.3.x [default jdk8 + tag jdk11] script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/bitbucket:6.3.0 atlassian/bitbucket/6.3.0 - docker push epicmorg/bitbucket:6.3.0 + - docker build --compress -t epicmorg/bitbucket:6.3.0-jdk11 -f atlassian/bitbucket/6.3.0/Dockerfile.jdk11 atlassian/bitbucket/6.3.0 + - docker push epicmorg/bitbucket:6.3.0-jdk11 - docker build --compress -t epicmorg/bitbucket:6.3.1 atlassian/bitbucket/6.3.1 - docker push epicmorg/bitbucket:6.3.1 + - docker build --compress -t epicmorg/bitbucket:6.3.1-jdk11 -f atlassian/bitbucket/6.3.1/Dockerfile.jdk11 atlassian/bitbucket/6.3.1 + - docker push epicmorg/bitbucket:6.3.1-jdk11 - docker build --compress -t epicmorg/bitbucket:6.3.2 atlassian/bitbucket/6.3.2 - docker push epicmorg/bitbucket:6.3.2 + - docker build --compress -t epicmorg/bitbucket:6.3.2-jdk11 -f atlassian/bitbucket/6.3.2/Dockerfile.jdk11 atlassian/bitbucket/6.3.2 + - docker push epicmorg/bitbucket:6.3.2-jdk11 - docker build --compress -t epicmorg/bitbucket:6.3.3 atlassian/bitbucket/6.3.3 - docker push epicmorg/bitbucket:6.3.3 + - docker build --compress -t epicmorg/bitbucket:6.3.3-jdk11 -f atlassian/bitbucket/6.3.3/Dockerfile.jdk11 atlassian/bitbucket/6.3.3 + - docker push epicmorg/bitbucket:6.3.3-jdk11 - docker build --compress -t epicmorg/bitbucket:6.3.4 atlassian/bitbucket/6.3.4 - docker push epicmorg/bitbucket:6.3.4 + - docker build --compress -t epicmorg/bitbucket:6.3.4-jdk11 -f atlassian/bitbucket/6.3.4/Dockerfile.jdk11 atlassian/bitbucket/6.3.4 + - docker push epicmorg/bitbucket:6.3.4-jdk11 - docker build --compress -t epicmorg/bitbucket:6.3.5 atlassian/bitbucket/6.3.5 - docker push epicmorg/bitbucket:6.3.5 + - docker build --compress -t epicmorg/bitbucket:6.3.5-jdk11 -f atlassian/bitbucket/6.3.5/Dockerfile.jdk11 atlassian/bitbucket/6.3.5 + - docker push epicmorg/bitbucket:6.3.5-jdk11 - docker build --compress -t epicmorg/bitbucket:6.3.6 atlassian/bitbucket/6.3.6 - docker push epicmorg/bitbucket:6.3.6 + - docker build --compress -t epicmorg/bitbucket:6.3.6-jdk11 -f atlassian/bitbucket/6.3.6/Dockerfile.jdk11 atlassian/bitbucket/6.3.6 + - docker push epicmorg/bitbucket:6.3.6-jdk11 ########## - - name: Bitbucket 6.4.x + - name: Bitbucket 6.4.x [default jdk8 + tag jdk11] script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/bitbucket:6.4.0 atlassian/bitbucket/6.4.0 - docker push epicmorg/bitbucket:6.4.0 + - docker build --compress -t epicmorg/bitbucket:6.4.0-jdk11 -f atlassian/bitbucket/6.4.0/Dockerfile.jdk11 atlassian/bitbucket/6.4.0 + - docker push epicmorg/bitbucket:6.4.0-jdk11 - docker build --compress -t epicmorg/bitbucket:6.4.1 atlassian/bitbucket/6.4.1 - docker push epicmorg/bitbucket:6.4.1 + - docker build --compress -t epicmorg/bitbucket:6.4.1-jdk11 -f atlassian/bitbucket/6.4.1/Dockerfile.jdk11 atlassian/bitbucket/6.4.1 + - docker push epicmorg/bitbucket:6.4.1-jdk11 - docker build --compress -t epicmorg/bitbucket:6.4.2 atlassian/bitbucket/6.4.2 - docker push epicmorg/bitbucket:6.4.2 + - docker build --compress -t epicmorg/bitbucket:6.4.2-jdk11 -f atlassian/bitbucket/6.4.2/Dockerfile.jdk11 atlassian/bitbucket/6.4.2 + - docker push epicmorg/bitbucket:6.4.2-jdk11 - docker build --compress -t epicmorg/bitbucket:6.4.3 atlassian/bitbucket/6.4.3 - docker push epicmorg/bitbucket:6.4.3 + - docker build --compress -t epicmorg/bitbucket:6.4.3-jdk11 -f atlassian/bitbucket/6.4.3/Dockerfile.jdk11 atlassian/bitbucket/6.4.3 + - docker push epicmorg/bitbucket:6.4.3-jdk11 - docker build --compress -t epicmorg/bitbucket:6.4.4 atlassian/bitbucket/6.4.4 - docker push epicmorg/bitbucket:6.4.4 + - docker build --compress -t epicmorg/bitbucket:6.4.4-jdk11 -f atlassian/bitbucket/6.4.4/Dockerfile.jdk11 atlassian/bitbucket/6.4.4 + - docker push epicmorg/bitbucket:6.4.4-jdk11 ########## - - name: Bitbucket 6.5.x + - name: Bitbucket 6.5.x [default jdk8 + tag jdk11] script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/bitbucket:6.5.0 atlassian/bitbucket/6.5.0 - docker push epicmorg/bitbucket:6.5.0 + - docker build --compress -t epicmorg/bitbucket:6.5.0-jdk11 -f atlassian/bitbucket/6.5.0/Dockerfile.jdk11 atlassian/bitbucket/6.5.0 + - docker push epicmorg/bitbucket:6.5.0-jdk11 - docker build --compress -t epicmorg/bitbucket:6.5.1 atlassian/bitbucket/6.5.1 - docker push epicmorg/bitbucket:6.5.1 + - docker build --compress -t epicmorg/bitbucket:6.5.1-jdk11 -f atlassian/bitbucket/6.5.1/Dockerfile.jdk11 atlassian/bitbucket/6.5.1 + - docker push epicmorg/bitbucket:6.5.1-jdk11 - docker build --compress -t epicmorg/bitbucket:6.5.2 atlassian/bitbucket/6.5.2 - docker push epicmorg/bitbucket:6.5.2 + - docker build --compress -t epicmorg/bitbucket:6.5.2-jdk11 -f atlassian/bitbucket/6.5.2/Dockerfile.jdk11 atlassian/bitbucket/6.5.2 + - docker push epicmorg/bitbucket:6.5.2-jdk11 - docker build --compress -t epicmorg/bitbucket:6.5.3 atlassian/bitbucket/6.5.3 - docker push epicmorg/bitbucket:6.5.3 + - docker build --compress -t epicmorg/bitbucket:6.5.3-jdk11 -f atlassian/bitbucket/6.5.3/Dockerfile.jdk11 atlassian/bitbucket/6.5.3 + - docker push epicmorg/bitbucket:6.5.3-jdk11 ########## - - name: Bitbucket 6.6.x + - name: Bitbucket 6.6.x [default jdk8 + tag jdk11] script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/bitbucket:6.6.0 atlassian/bitbucket/6.6.0 - docker push epicmorg/bitbucket:6.6.0 + - docker build --compress -t epicmorg/bitbucket:6.6.0-jdk11 -f atlassian/bitbucket/6.6.0/Dockerfile.jdk11 atlassian/bitbucket/6.6.0 + - docker push epicmorg/bitbucket:6.6.0-jdk11 - docker build --compress -t epicmorg/bitbucket:6.6.1 atlassian/bitbucket/6.6.1 - docker push epicmorg/bitbucket:6.6.1 + - docker build --compress -t epicmorg/bitbucket:6.6.1-jdk11 -f atlassian/bitbucket/6.6.1/Dockerfile.jdk11 atlassian/bitbucket/6.6.1 + - docker push epicmorg/bitbucket:6.6.1-jdk11 - docker build --compress -t epicmorg/bitbucket:6.6.2 atlassian/bitbucket/6.6.2 - docker push epicmorg/bitbucket:6.6.2 + - docker build --compress -t epicmorg/bitbucket:6.6.2-jdk11 -f atlassian/bitbucket/6.6.2/Dockerfile.jdk11 atlassian/bitbucket/6.6.2 + - docker push epicmorg/bitbucket:6.6.2-jdk11 - docker build --compress -t epicmorg/bitbucket:6.6.3 atlassian/bitbucket/6.6.3 - docker push epicmorg/bitbucket:6.6.3 + - docker build --compress -t epicmorg/bitbucket:6.6.3-jdk11 -f atlassian/bitbucket/6.6.3/Dockerfile.jdk11 atlassian/bitbucket/6.6.3 + - docker push epicmorg/bitbucket:6.6.3-jdk11 ########## - - name: Bitbucket 6.7.x + - name: Bitbucket 6.7.x [default jdk8 + tag jdk11] script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/bitbucket:6.7.0 atlassian/bitbucket/6.7.0 - docker push epicmorg/bitbucket:6.7.0 + - docker build --compress -t epicmorg/bitbucket:6.7.0-jdk11 -f atlassian/bitbucket/6.7.0/Dockerfile.jdk11 atlassian/bitbucket/6.7.0 + - docker push epicmorg/bitbucket:6.7.0-jdk11 - docker build --compress -t epicmorg/bitbucket:6.7.1 atlassian/bitbucket/6.7.1 - docker push epicmorg/bitbucket:6.7.1 + - docker build --compress -t epicmorg/bitbucket:6.7.1-jdk11 -f atlassian/bitbucket/6.7.1/Dockerfile.jdk11 atlassian/bitbucket/6.7.1 + - docker push epicmorg/bitbucket:6.7.1-jdk11 - docker build --compress -t epicmorg/bitbucket:6.7.2 atlassian/bitbucket/6.7.2 - docker push epicmorg/bitbucket:6.7.2 + - docker build --compress -t epicmorg/bitbucket:6.7.2-jdk11 -f atlassian/bitbucket/6.7.2/Dockerfile.jdk11 atlassian/bitbucket/6.7.2 + - docker push epicmorg/bitbucket:6.7.2-jdk11 - docker build --compress -t epicmorg/bitbucket:6.7.3 atlassian/bitbucket/6.7.3 - docker push epicmorg/bitbucket:6.7.3 + - docker build --compress -t epicmorg/bitbucket:6.7.3-jdk11 -f atlassian/bitbucket/6.7.3/Dockerfile.jdk11 atlassian/bitbucket/6.7.3 + - docker push epicmorg/bitbucket:6.7.3-jdk11 ########## - - name: Bitbucket 6.8.x + - name: Bitbucket 6.8.x [default jdk8 + tag jdk11] script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/bitbucket:6.8.0 atlassian/bitbucket/6.8.0 - docker push epicmorg/bitbucket:6.8.0 + - docker build --compress -t epicmorg/bitbucket:6.8.0-jdk11 -f atlassian/bitbucket/6.8.0/Dockerfile.jdk11 atlassian/bitbucket/6.8.0 + - docker push epicmorg/bitbucket:6.8.0-jdk11 - docker build --compress -t epicmorg/bitbucket:6.8.1 atlassian/bitbucket/6.8.1 - docker push epicmorg/bitbucket:6.8.1 + - docker build --compress -t epicmorg/bitbucket:6.8.1-jdk11 -f atlassian/bitbucket/6.8.1/Dockerfile.jdk11 atlassian/bitbucket/6.8.1 + - docker push epicmorg/bitbucket:6.8.1-jdk11 - docker build --compress -t epicmorg/bitbucket:6.8.2 atlassian/bitbucket/6.8.2 - docker push epicmorg/bitbucket:6.8.2 + - docker build --compress -t epicmorg/bitbucket:6.8.2-jdk11 -f atlassian/bitbucket/6.8.2/Dockerfile.jdk11 atlassian/bitbucket/6.8.2 + - docker push epicmorg/bitbucket:6.8.2-jdk11 ########## - - name: Bitbucket 6.9.x + - name: Bitbucket 6.9.x [default jdk8 + tag jdk11] script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/bitbucket:6.9.0 atlassian/bitbucket/6.9.0 - docker push epicmorg/bitbucket:6.9.0 + - docker build --compress -t epicmorg/bitbucket:6.9.0-jdk11 -f atlassian/bitbucket/6.9.0/Dockerfile.jdk11 atlassian/bitbucket/6.9.0 + - docker push epicmorg/bitbucket:6.9.0-jdk11 - docker build --compress -t epicmorg/bitbucket:6.9.1 atlassian/bitbucket/6.9.1 - docker push epicmorg/bitbucket:6.9.1 + - docker build --compress -t epicmorg/bitbucket:6.9.1-jdk11 -f atlassian/bitbucket/6.9.1/Dockerfile.jdk11 atlassian/bitbucket/6.9.1 + - docker push epicmorg/bitbucket:6.9.1-jdk11 ########## - - name: Bitbucket 6.10.x LTS + - name: Bitbucket 6.10.x LTS [default jdk8 + tag jdk11] script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/bitbucket:6.10.0 atlassian/bitbucket/6.10.0 - docker push epicmorg/bitbucket:6.10.0 + - docker build --compress -t epicmorg/bitbucket:6.10.0-jdk11 -f atlassian/bitbucket/6.10.0/Dockerfile.jdk11 atlassian/bitbucket/6.10.0 + - docker push epicmorg/bitbucket:6.10.0-jdk11 ######################################### #### Our Confluence images @@ -768,37 +886,37 @@ matrix: ########## - - name: Confluence 7.1.x + - name: Confluence 7.1.x [default jdk8 + tag jdk11] script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/confluence:7.1.0 atlassian/confluence/7.1.0 - docker push epicmorg/confluence:7.1.0 - - docker build --compress -t epicmorg/confluence:7.1.0-jdk11 -f /atlassian/confluence/7.1.0/Dockerfile.jdk11 atlassian/confluence/7.1.0 + - docker build --compress -t epicmorg/confluence:7.1.0-jdk11 -f atlassian/confluence/7.1.0/Dockerfile.jdk11 atlassian/confluence/7.1.0 - docker push epicmorg/confluence:7.1.0-jdk11 - docker build --compress -t epicmorg/confluence:7.1.1 atlassian/confluence/7.1.1 - docker push epicmorg/confluence:7.1.1 - - docker build --compress -t epicmorg/confluence:7.1.1-jdk11 -f /atlassian/confluence/7.1.1/Dockerfile.jdk11 atlassian/confluence/7.1.1 + - docker build --compress -t epicmorg/confluence:7.1.1-jdk11 -f atlassian/confluence/7.1.1/Dockerfile.jdk11 atlassian/confluence/7.1.1 - docker push epicmorg/confluence:7.1.1-jdk11 - docker build --compress -t epicmorg/confluence:7.1.2 atlassian/confluence/7.1.2 - docker push epicmorg/confluence:7.1.2 - - docker build --compress -t epicmorg/confluence:7.1.2-jdk11 -f /atlassian/confluence/7.1.2/Dockerfile.jdk11 atlassian/confluence/7.1.2 + - docker build --compress -t epicmorg/confluence:7.1.2-jdk11 -f atlassian/confluence/7.1.2/Dockerfile.jdk11 atlassian/confluence/7.1.2 - docker push epicmorg/confluence:7.1.2-jdk11 ########## - - name: Confluence 7.2.x + - name: Confluence 7.2.x [default jdk8 + tag jdk11] script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/confluence:7.2.0 atlassian/confluence/7.2.0 - docker push epicmorg/confluence:7.2.0 - - docker build --compress -t epicmorg/confluence:7.2.0-jdk11 -f /atlassian/confluence/7.2.0/Dockerfile.jdk11 atlassian/confluence/7.2.0 + - docker build --compress -t epicmorg/confluence:7.2.0-jdk11 -f atlassian/confluence/7.2.0/Dockerfile.jdk11 atlassian/confluence/7.2.0 - docker push epicmorg/confluence:7.2.0-jdk11 - docker build --compress -t epicmorg/confluence:7.2.1 atlassian/confluence/7.2.0 - docker push epicmorg/confluence:7.2.1 - - docker build --compress -t epicmorg/confluence:7.2.1-jdk11 -f /atlassian/confluence/7.2.1/Dockerfile.jdk11 atlassian/confluence/7.2.1 + - docker build --compress -t epicmorg/confluence:7.2.1-jdk11 -f atlassian/confluence/7.2.1/Dockerfile.jdk11 atlassian/confluence/7.2.1 - docker push epicmorg/confluence:7.2.1-jdk11 ######################################### @@ -1199,97 +1317,143 @@ matrix: ########## - - name: Jira 8.2.x + - name: Jira 8.2.x [default jdk8 + tag jdk11] script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:8.2.0 atlassian/jira/8.2.0 - docker push epicmorg/jira:8.2.0 + - docker build --compress -t epicmorg/jira:8.2.0-jdk11 -f atlassian/jira/8.2.0/Dockerfile.jdk11 atlassian/jira/8.2.0 + - docker push epicmorg/jira:8.2.0-jdk11 - docker build --compress -t epicmorg/jira:8.2.1 atlassian/jira/8.2.1 - docker push epicmorg/jira:8.2.1 + - docker build --compress -t epicmorg/jira:8.2.1-jdk11 -f atlassian/jira/8.2.1/Dockerfile.jdk11 atlassian/jira/8.2.1 + - docker push epicmorg/jira:8.2.1-jdk11 - docker build --compress -t epicmorg/jira:8.2.2 atlassian/jira/8.2.2 - docker push epicmorg/jira:8.2.2 + - docker build --compress -t epicmorg/jira:8.2.2-jdk11 -f atlassian/jira/8.2.2/Dockerfile.jdk11 atlassian/jira/8.2.2 + - docker push epicmorg/jira:8.2.2-jdk11 - docker build --compress -t epicmorg/jira:8.2.3 atlassian/jira/8.2.3 - docker push epicmorg/jira:8.2.3 + - docker build --compress -t epicmorg/jira:8.2.3-jdk11 -f atlassian/jira/8.2.3/Dockerfile.jdk11 atlassian/jira/8.2.3 + - docker push epicmorg/jira:8.2.3-jdk11 - docker build --compress -t epicmorg/jira:8.2.4 atlassian/jira/8.2.4 - docker push epicmorg/jira:8.2.4 + - docker build --compress -t epicmorg/jira:8.2.4-jdk11 -f atlassian/jira/8.2.4/Dockerfile.jdk11 atlassian/jira/8.2.4 + - docker push epicmorg/jira:8.2.4-jdk11 - docker build --compress -t epicmorg/jira:8.2.5 atlassian/jira/8.2.5 - docker push epicmorg/jira:8.2.5 + - docker build --compress -t epicmorg/jira:8.2.5-jdk11 -f atlassian/jira/8.2.5/Dockerfile.jdk11 atlassian/jira/8.2.5 + - docker push epicmorg/jira:8.2.5-jdk11 - docker build --compress -t epicmorg/jira:8.2.6 atlassian/jira/8.2.6 - docker push epicmorg/jira:8.2.6 + - docker build --compress -t epicmorg/jira:8.2.6-jdk11 -f atlassian/jira/8.2.6/Dockerfile.jdk11 atlassian/jira/8.2.6 + - docker push epicmorg/jira:8.2.6-jdk11 ########## - - name: Jira 8.3.x + - name: Jira 8.3.x [default jdk8 + tag jdk11] script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:8.3.0 atlassian/jira/8.3.0 - docker push epicmorg/jira:8.3.0 + - docker build --compress -t epicmorg/jira:8.3.0-jdk11 -f atlassian/jira/8.3.0/Dockerfile.jdk11 atlassian/jira/8.3.0 + - docker push epicmorg/jira:8.3.0-jdk11 - docker build --compress -t epicmorg/jira:8.3.1 atlassian/jira/8.3.1 - docker push epicmorg/jira:8.3.1 + - docker build --compress -t epicmorg/jira:8.3.1-jdk11 -f atlassian/jira/8.3.1/Dockerfile.jdk11 atlassian/jira/8.3.1 + - docker push epicmorg/jira:8.3.1-jdk11 - docker build --compress -t epicmorg/jira:8.3.2 atlassian/jira/8.3.2 - docker push epicmorg/jira:8.3.2 + - docker build --compress -t epicmorg/jira:8.3.2-jdk11 -f atlassian/jira/8.3.2/Dockerfile.jdk11 atlassian/jira/8.3.2 + - docker push epicmorg/jira:8.3.2-jdk11 - docker build --compress -t epicmorg/jira:8.3.3 atlassian/jira/8.3.3 - docker push epicmorg/jira:8.3.3 + - docker build --compress -t epicmorg/jira:8.3.3-jdk11 -f atlassian/jira/8.3.3/Dockerfile.jdk11 atlassian/jira/8.3.3 + - docker push epicmorg/jira:8.3.3-jdk11 - docker build --compress -t epicmorg/jira:8.3.4 atlassian/jira/8.3.4 - docker push epicmorg/jira:8.3.4 + - docker build --compress -t epicmorg/jira:8.3.4-jdk11 -f atlassian/jira/8.3.4/Dockerfile.jdk11 atlassian/jira/8.3.4 + - docker push epicmorg/jira:8.3.4-jdk11 - docker build --compress -t epicmorg/jira:8.3.5 atlassian/jira/8.3.5 - docker push epicmorg/jira:8.3.5 + - docker build --compress -t epicmorg/jira:8.3.5-jdk11 -f atlassian/jira/8.3.5/Dockerfile.jdk11 atlassian/jira/8.3.5 + - docker push epicmorg/jira:8.3.5-jdk11 ########## - - name: Jira 8.4.x + - name: Jira 8.4.x [default jdk8 + tag jdk11] script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:8.4.0 atlassian/jira/8.4.0 - docker push epicmorg/jira:8.4.0 + - docker build --compress -t epicmorg/jira:8.4.0-jdk11 -f atlassian/jira/8.4.0/Dockerfile.jdk11 atlassian/jira/8.4.0 + - docker push epicmorg/jira:8.4.0-jdk11 - docker build --compress -t epicmorg/jira:8.4.1 atlassian/jira/8.4.1 - docker push epicmorg/jira:8.4.1 + - docker build --compress -t epicmorg/jira:8.4.1-jdk11 -f atlassian/jira/8.4.1/Dockerfile.jdk11 atlassian/jira/8.4.1 + - docker push epicmorg/jira:8.4.1-jdk11 - docker build --compress -t epicmorg/jira:8.4.2 atlassian/jira/8.4.2 - docker push epicmorg/jira:8.4.2 + - docker build --compress -t epicmorg/jira:8.4.2-jdk11 -f atlassian/jira/8.4.2/Dockerfile.jdk11 atlassian/jira/8.4.2 + - docker push epicmorg/jira:8.4.2-jdk11 - docker build --compress -t epicmorg/jira:8.4.3 atlassian/jira/8.4.3 - docker push epicmorg/jira:8.4.3 + - docker build --compress -t epicmorg/jira:8.4.3-jdk11 -f atlassian/jira/8.4.3/Dockerfile.jdk11 atlassian/jira/8.4.3 + - docker push epicmorg/jira:8.4.3-jdk11 ########## - - name: Jira 8.5.x LTS + - name: Jira 8.5.x LTS [default jdk8 + tag jdk11] script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:8.5.0 atlassian/jira/8.5.0 - docker push epicmorg/jira:8.5.0 + - docker build --compress -t epicmorg/jira:8.5.0-jdk11 -f atlassian/jira/8.5.0/Dockerfile.jdk11 atlassian/jira/8.5.0 + - docker push epicmorg/jira:8.5.0-jdk11 - docker build --compress -t epicmorg/jira:8.5.1 atlassian/jira/8.5.1 - docker push epicmorg/jira:8.5.1 + - docker build --compress -t epicmorg/jira:8.5.1-jdk11 -f atlassian/jira/8.5.1/Dockerfile.jdk11 atlassian/jira/8.5.1 + - docker push epicmorg/jira:8.5.1-jdk11 - docker build --compress -t epicmorg/jira:8.5.2 atlassian/jira/8.5.2 - docker push epicmorg/jira:8.5.2 + - docker build --compress -t epicmorg/jira:8.5.2-jdk11 -f atlassian/jira/8.5.2/Dockerfile.jdk11 atlassian/jira/8.5.2 + - docker push epicmorg/jira:8.5.2-jdk11 - docker build --compress -t epicmorg/jira:8.5.3 atlassian/jira/8.5.3 - docker push epicmorg/jira:8.5.3 + - docker build --compress -t epicmorg/jira:8.5.3-jdk11 -f atlassian/jira/8.5.3/Dockerfile.jdk11 atlassian/jira/8.5.3 + - docker push epicmorg/jira:8.5.3-jdk11 ########## - - name: Jira 8.6.x + - name: Jira 8.6.x [default jdk8 + tag jdk11] script: - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - docker build --compress -t epicmorg/jira:8.6.0 atlassian/jira/8.6.0 - docker push epicmorg/jira:8.6.0 + - docker build --compress -t epicmorg/jira:8.6.0-jdk11 -f atlassian/jira/8.6.0/Dockerfile.jdk11 atlassian/jira/8.6.0 + - docker push epicmorg/jira:8.6.0-jdk11 - docker build --compress -t epicmorg/jira:8.6.1 atlassian/jira/8.6.1 - docker push epicmorg/jira:8.6.1 + - docker build --compress -t epicmorg/jira:8.6.1-jdk11 -f atlassian/jira/8.6.1/Dockerfile.jdk11 atlassian/jira/8.6.1 + - docker push epicmorg/jira:8.6.1-jdk11 ######################################### #### Our minor priority images diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b3846dc0..5a42e57f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,6 +48,7 @@ * jdk8-based (default for all images) * jdk11-based for new images (by special `-jdk11` tag) * optimized final containers which uses `devel` base + * updated REAMDE.md * 12/13/2019 * updated `teamcity agent`. added `php 7.3` support. * fixed `nginx` image. From 66f445d432872c6e32fad1437ef41ff8c2f3d739 Mon Sep 17 00:00:00 2001 From: stam Date: Fri, 17 Jan 2020 11:07:22 +0300 Subject: [PATCH 49/50] log flooding fix --- balancer/latest/Dockerfile | 10 +++++----- qbittorrent/latest/Dockerfile | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/balancer/latest/Dockerfile b/balancer/latest/Dockerfile index 059603997..75f7b2af9 100644 --- a/balancer/latest/Dockerfile +++ b/balancer/latest/Dockerfile @@ -183,11 +183,11 @@ RUN apt-get update && \ apt clean -y && \ apt autoclean -y && \ - rm -rfv /var/lib/apt/lists/* && \ - rm -rfv /var/cache/apt/archives/*.deb && \ - rm -rfv /tmp/deb/* && \ - rm -rfv /builds/* && \ - rm -rfv /valve/* + rm -rf /var/lib/apt/lists/* && \ + rm -rf /var/cache/apt/archives/*.deb && \ + rm -rf /tmp/deb/* && \ + rm -rf /builds/* && \ + rm -rf /valve/* #Final config VOLUME ["/var/cache/nginx"] diff --git a/qbittorrent/latest/Dockerfile b/qbittorrent/latest/Dockerfile index 699eaeb70..758ad51a0 100644 --- a/qbittorrent/latest/Dockerfile +++ b/qbittorrent/latest/Dockerfile @@ -37,10 +37,10 @@ RUN apt-get update && \ ################################################################## RUN apt clean -y && \ apt autoclean -y && \ - rm -rfv /var/lib/apt/lists/* && \ - rm -rfv /var/cache/apt/archives/*.deb && \ - rm -rfv /builds/* && \ - rm -rfv /valve/* + rm -rf /var/lib/apt/lists/* && \ + rm -rf /var/cache/apt/archives/*.deb && \ + rm -rf /builds/* && \ + rm -rf /valve/* VOLUME ${QBT_DIR} From eac02a5772d815feb00be2d88ed963f69e70fde1 Mon Sep 17 00:00:00 2001 From: stam Date: Fri, 17 Jan 2020 16:14:00 +0300 Subject: [PATCH 50/50] travis.ci fix --- qbittorrent/stable/Dockerfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/qbittorrent/stable/Dockerfile b/qbittorrent/stable/Dockerfile index a1d1eeae2..54dc0bf01 100644 --- a/qbittorrent/stable/Dockerfile +++ b/qbittorrent/stable/Dockerfile @@ -37,10 +37,10 @@ RUN apt-get update && \ ################################################################## RUN apt clean -y && \ apt autoclean -y && \ - rm -rfv /var/lib/apt/lists/* && \ - rm -rfv /var/cache/apt/archives/*.deb && \ - rm -rfv /builds/* && \ - rm -rfv /valve/* + rm -rf /var/lib/apt/lists/* && \ + rm -rf /var/cache/apt/archives/*.deb && \ + rm -rf /builds/* && \ + rm -rf /valve/* VOLUME ${QBT_DIR}