Compare commits
32 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
04f8c23aad | ||
|
|
9789c073b4 | ||
|
|
75d3a4974a | ||
|
|
f8638dfeef | ||
|
|
72d583858d | ||
|
|
e3bacc0eae | ||
|
|
cd4f386e11 | ||
|
|
0dcb334e40 | ||
|
|
f719222449 | ||
|
|
216258c4d1 | ||
|
|
8883354cfc | ||
|
|
09dfb38e2c | ||
|
|
a24a1d4ecc | ||
|
|
0821935fea | ||
|
|
91cb09fbf8 | ||
|
|
a8406d7692 | ||
|
|
d2cb392713 | ||
|
|
26ab7144ac | ||
|
|
c626cd1693 | ||
|
|
2f35822bed | ||
|
|
8f52ba7c7b | ||
|
|
8c65605ef4 | ||
|
|
ac739e60cf | ||
|
|
9752d4b930 | ||
|
|
82d6205bbc | ||
|
|
22a934e981 | ||
|
|
a0b15ec67c | ||
|
|
7006b09ccd | ||
|
|
69a46a5474 | ||
|
|
ee30af239c | ||
|
|
a06f7633aa | ||
|
|
1116df75e5 |
14
.dockerignore
Normal file
14
.dockerignore
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
/.dev
|
||||||
|
/.idea
|
||||||
|
/*.iml
|
||||||
|
|
||||||
|
/.git
|
||||||
|
/.res
|
||||||
|
/examples
|
||||||
|
/.editorconfig
|
||||||
|
/.gitignore
|
||||||
|
/.travis.yml
|
||||||
|
/build.sh
|
||||||
|
/CHANGELOG.md
|
||||||
|
/LICENSE
|
||||||
|
/README.md
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 76 KiB |
BIN
.res/paypal.png
BIN
.res/paypal.png
Binary file not shown.
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 7.5 KiB |
49
.travis.yml
49
.travis.yml
@@ -5,63 +5,22 @@ services:
|
|||||||
|
|
||||||
env:
|
env:
|
||||||
global:
|
global:
|
||||||
- VERSION=16429
|
- VERSION=18692
|
||||||
- GITHUB_REPO=crazy-max/docker-jetbrains-license-server
|
- DOCKER_LOGIN=crazymax
|
||||||
- DOCKER_USERNAME=crazymax
|
- DOCKER_USERNAME=crazymax
|
||||||
- DOCKER_REPONAME=jetbrains-license-server
|
- DOCKER_REPONAME=jetbrains-license-server
|
||||||
|
- QUAY_LOGIN=crazymax
|
||||||
- QUAY_USERNAME=crazymax
|
- QUAY_USERNAME=crazymax
|
||||||
- QUAY_REPONAME=jetbrains-license-server
|
- QUAY_REPONAME=jetbrains-license-server
|
||||||
- DOCKER_VERSION=17.12.0~ce-0~ubuntu
|
|
||||||
- COMPOSE_VERSION=1.18.0
|
|
||||||
- MICROBADGER_HOOK=https://hooks.microbadger.com/images/crazymax/jetbrains-license-server/PWF7sHnaK1djP4E9r5VY5suUqVk=
|
- MICROBADGER_HOOK=https://hooks.microbadger.com/images/crazymax/jetbrains-license-server/PWF7sHnaK1djP4E9r5VY5suUqVk=
|
||||||
- secure: JwfXiiIM4c6E+80O6XHQBhw6IdkerfGxlKo+YHvmtkHyz5Fvpc1ZRvWSZYHZhxE1gocThbKUCy4GsgIyiq+dsER27kdAnnvp6JLw8SZ5OSqtOOLjqCKilN2hwFaS/g6Xc3mGvTo+4ScAc9CDJamDCwGY+6r2g/+IdmCbgqOo8yaD4VkhP4eVB3f4el6F7jEwjo626QDzFZ1LVS0qmmeVBSU+xxfL5HolG+j//hLQ/49XIIGnsWtQmHbX1u2trSESyNRTFdY/KZ7qaW8l+BgLhplKu+YXAExb1POGcKJnffSJjCl22ggX1JUHANMgrcQfZe2DKkUJFqr8FvTCktj+lfAuMYwl3k24zcZHe8eTyBFh8YLs7pn++tOFWg0XcKCWO9vzHgbTf/m95F6tpDMx4Y49jRclJIslxkjf8YIuNvDOO4kPKp2bw4ymqjsayPLx3P4xB8vgvyAZeFBQevUkh3ia/3uCfwEwzWimlT1FTeDUj8h4A9y+zRy/AqGf35LneC/Sbwt5dNaCujAwOGFeCvTp43uYd10S5Rz026ecH/8XlcHzuH4+nUvXDnesRI79+6NkaKl8PdcTx0ZC44jIAULn60rur5ybNkQmv5GWjem1C24izosPuC8bLHYY6BSRPn+vacNZH9SYTw2wHiVunxZORWz4FsYAidFkoaygt9E= # DOCKER_PASSWORD
|
- secure: JwfXiiIM4c6E+80O6XHQBhw6IdkerfGxlKo+YHvmtkHyz5Fvpc1ZRvWSZYHZhxE1gocThbKUCy4GsgIyiq+dsER27kdAnnvp6JLw8SZ5OSqtOOLjqCKilN2hwFaS/g6Xc3mGvTo+4ScAc9CDJamDCwGY+6r2g/+IdmCbgqOo8yaD4VkhP4eVB3f4el6F7jEwjo626QDzFZ1LVS0qmmeVBSU+xxfL5HolG+j//hLQ/49XIIGnsWtQmHbX1u2trSESyNRTFdY/KZ7qaW8l+BgLhplKu+YXAExb1POGcKJnffSJjCl22ggX1JUHANMgrcQfZe2DKkUJFqr8FvTCktj+lfAuMYwl3k24zcZHe8eTyBFh8YLs7pn++tOFWg0XcKCWO9vzHgbTf/m95F6tpDMx4Y49jRclJIslxkjf8YIuNvDOO4kPKp2bw4ymqjsayPLx3P4xB8vgvyAZeFBQevUkh3ia/3uCfwEwzWimlT1FTeDUj8h4A9y+zRy/AqGf35LneC/Sbwt5dNaCujAwOGFeCvTp43uYd10S5Rz026ecH/8XlcHzuH4+nUvXDnesRI79+6NkaKl8PdcTx0ZC44jIAULn60rur5ybNkQmv5GWjem1C24izosPuC8bLHYY6BSRPn+vacNZH9SYTw2wHiVunxZORWz4FsYAidFkoaygt9E= # DOCKER_PASSWORD
|
||||||
- secure: Z+SIP2bLs70GcInLxGdYv68vXD47RIfowafFP8KpVt7EHki6AsIVJxrEH4/noj0jsx0Zyi93xAo+Z9Ms+BDsjUKeLjODS/mHjRQBrnryenjAnS8cRVvJUUDYcoY95SIOO4j6OSEIb+aI2d+6T2QX/iEgnEFDjiia2mLJ60orsWDtgoU7dgITB7ci4WkSMZl8VXtX7SUWKgVPRKkapfYX/AFUS41MZTnJvGQHCtTYlOMcS7fsf6ahjMvbTmf+otv2n688Mbg8Tz3cEw6YD5BHemfDq5qEJqjjnCtMIr5VSZttDwKwHsgmHrVEoiPq+Cdo+xwq3XCdfKu/qAD7NalBjNVaf6UjLjhkk4CWwLxQFnon1e8EC8GodXob4jQTGVOQX47lkPCvf6zM14GI1YxGMtofkv5ND7Ul/g+9fsn+b/QJFsuQb3ZA34pufjQQ5HRaj0ZU7izXIpUOu5EVo5ffrmUnrTisVNaSuIUonEt0p1WPFhdr1ScUc/VukF+wapDdSrSu/t8a5MXp0q3nZ+20NHlkm90o8umQqS8U1oo/n1hlEWTpC4PtRd4wggz0YNGTIKLpuxUt8HolU9rSPbGcbMLC53bNxnWd9KFaaFmRj5Np1GsBm2CDAPFYb3n/Dqyww+tg9Nk4MnCLMwROyZ+5Y7UQLtG5Tsh9tCtwPtT7Juk= # QUAY_PASSWORD
|
- secure: Z+SIP2bLs70GcInLxGdYv68vXD47RIfowafFP8KpVt7EHki6AsIVJxrEH4/noj0jsx0Zyi93xAo+Z9Ms+BDsjUKeLjODS/mHjRQBrnryenjAnS8cRVvJUUDYcoY95SIOO4j6OSEIb+aI2d+6T2QX/iEgnEFDjiia2mLJ60orsWDtgoU7dgITB7ci4WkSMZl8VXtX7SUWKgVPRKkapfYX/AFUS41MZTnJvGQHCtTYlOMcS7fsf6ahjMvbTmf+otv2n688Mbg8Tz3cEw6YD5BHemfDq5qEJqjjnCtMIr5VSZttDwKwHsgmHrVEoiPq+Cdo+xwq3XCdfKu/qAD7NalBjNVaf6UjLjhkk4CWwLxQFnon1e8EC8GodXob4jQTGVOQX47lkPCvf6zM14GI1YxGMtofkv5ND7Ul/g+9fsn+b/QJFsuQb3ZA34pufjQQ5HRaj0ZU7izXIpUOu5EVo5ffrmUnrTisVNaSuIUonEt0p1WPFhdr1ScUc/VukF+wapDdSrSu/t8a5MXp0q3nZ+20NHlkm90o8umQqS8U1oo/n1hlEWTpC4PtRd4wggz0YNGTIKLpuxUt8HolU9rSPbGcbMLC53bNxnWd9KFaaFmRj5Np1GsBm2CDAPFYb3n/Dqyww+tg9Nk4MnCLMwROyZ+5Y7UQLtG5Tsh9tCtwPtT7Juk= # QUAY_PASSWORD
|
||||||
- secure: CRv5ONsqQ7WPkj/AzVId/EnQJVLcnlrAtCACsPisKWgA6QMACaIeVMKrSLP16/GyvERLmyzIGhIlprfmpiNkPeKlzGpJZBjvQ9gyK6YbexITEFjoBOH+rc27kFALCSKxGhr8m+BpHHmcGqCr79v7bFXE0p5TVFn00WbP7CfDjqAiwpcCF1JSDzA0e1mpHk3z7JXceQg9cdhPmhb1GiPMgbONSeTO3ASA9Hmi2JpwYCMaFcDsevVAA+eKSrQEkjYU3L0O4BRVlxUlWHYPSUEZ7vUlgH2imca6pD/WFYEzULj72MLeI9hpLkuXYUVaxLCBPiNoLKCyMIDsAiq5zyhmQyJFFjPo2l/JTKwtO8JCXR7B6sYp8j5gIir4Izbpm8r6VC8SBtafNcgynfehqs9Ov0yBsKKogo3fb/dSWdwANf36jQ766HaBQkp9NN0PFMLzbeXHaQA248MOP6ObqKsFg1c4iJ1UCY9A59hAUyXT+yAm0Y4auxq21/FEZ8pZFqan5qNaxvo0dP8WfeoVdsQAdZ3u7T4wtsxsO8PWKUA4FEoC3Ic9g5DBVte4SQJ5n6Ni2+DFnq4PZhBdCVwWnHh648sUfKncHdmbqTnIq6bN+RI9ZlY8MyeRKVVbbDU9mrmdM2aWlTeu4HQWd7J6ErHrTRDgkRJxKGbPDUemkX4Nhws= # GITHUB_TOKEN
|
|
||||||
|
|
||||||
before_install:
|
before_install:
|
||||||
- sudo apt-get update
|
- sudo apt-get update
|
||||||
- sudo apt-cache madison docker-ce
|
|
||||||
- sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce=${DOCKER_VERSION}
|
|
||||||
- docker --version
|
- docker --version
|
||||||
- curl -L https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > docker-compose
|
|
||||||
- chmod +x docker-compose
|
|
||||||
- sudo mv docker-compose /usr/local/bin
|
|
||||||
- docker-compose --version
|
|
||||||
- export BRANCH=$(if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then echo $TRAVIS_BRANCH; else echo $TRAVIS_PULL_REQUEST_BRANCH; fi)
|
|
||||||
- export DOCKER_TAG=$(if [ "$BRANCH" == "master" ]; then echo "latest"; else echo $BRANCH; fi)
|
|
||||||
- export WAN_IP=$(dig +short myip.opendns.com @resolver1.opendns.com)
|
|
||||||
- echo "WAN_IP=$WAN_IP, TRAVIS_BRANCH=$TRAVIS_BRANCH, PR=$PR, BRANCH=$BRANCH, DOCKER_TAG=$DOCKER_TAG"
|
|
||||||
|
|
||||||
install:
|
script: ./build.sh
|
||||||
- |
|
|
||||||
docker build --build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
|
||||||
--build-arg VCS_REF=${TRAVIS_COMMIT::8} \
|
|
||||||
--build-arg VERSION=${VERSION} \
|
|
||||||
-t $DOCKER_USERNAME/$DOCKER_REPONAME -f ./docker/Dockerfile ./docker
|
|
||||||
|
|
||||||
before_script:
|
|
||||||
- docker run -d -p 8000:80 -e JLS_VIRTUAL_HOSTS=$WAN_IP --name $DOCKER_REPONAME $DOCKER_USERNAME/$DOCKER_REPONAME
|
|
||||||
- sleep 20
|
|
||||||
- docker logs $DOCKER_REPONAME
|
|
||||||
|
|
||||||
script:
|
|
||||||
- docker ps | grep $DOCKER_REPONAME
|
|
||||||
|
|
||||||
after_success:
|
|
||||||
- test $TRAVIS_PULL_REQUEST = false
|
|
||||||
&& echo "$DOCKER_PASSWORD" | docker login --username "$DOCKER_USERNAME" --password-stdin
|
|
||||||
&& docker tag $DOCKER_USERNAME/$DOCKER_REPONAME $DOCKER_USERNAME/$DOCKER_REPONAME:$DOCKER_TAG
|
|
||||||
&& docker tag $DOCKER_USERNAME/$DOCKER_REPONAME $DOCKER_USERNAME/$DOCKER_REPONAME:$VERSION
|
|
||||||
&& docker push $DOCKER_USERNAME/$DOCKER_REPONAME
|
|
||||||
&& echo "$QUAY_PASSWORD" | docker login quay.io --username "$QUAY_USERNAME" --password-stdin
|
|
||||||
&& docker tag $DOCKER_USERNAME/$DOCKER_REPONAME quay.io/$DOCKER_USERNAME/$DOCKER_REPONAME:$DOCKER_TAG
|
|
||||||
&& docker tag $DOCKER_USERNAME/$DOCKER_REPONAME quay.io/$DOCKER_USERNAME/$DOCKER_REPONAME:$VERSION
|
|
||||||
&& docker push quay.io/$QUAY_USERNAME/$QUAY_REPONAME
|
|
||||||
&& curl -X POST $MICROBADGER_HOOK
|
|
||||||
|
|
||||||
branches:
|
|
||||||
except:
|
|
||||||
- /^[0-9]/
|
|
||||||
|
|
||||||
notifications:
|
notifications:
|
||||||
webhooks:
|
webhooks:
|
||||||
|
|||||||
28
CHANGELOG.md
28
CHANGELOG.md
@@ -1,5 +1,33 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 18692-RC2 (2019/01/22)
|
||||||
|
|
||||||
|
* Bind to unprivileged port : `8000`
|
||||||
|
|
||||||
|
## 18692-RC1 (2018/12/25)
|
||||||
|
|
||||||
|
* Upgrade to JetBrains License Server 18692
|
||||||
|
|
||||||
|
## 17955-RC1 (2018/09/26)
|
||||||
|
|
||||||
|
* Upgrade to JetBrains License Server 17955
|
||||||
|
|
||||||
|
## 17768-RC1 (2018/09/05)
|
||||||
|
|
||||||
|
* Upgrade to JetBrains License Server 17768
|
||||||
|
|
||||||
|
## 17437-RC1 (2018/07/30)
|
||||||
|
|
||||||
|
* Upgrade to JetBrains License Server 17437
|
||||||
|
|
||||||
|
## 17211-RC1 (2018/06/29)
|
||||||
|
|
||||||
|
* Upgrade to JetBrains License Server 17211
|
||||||
|
|
||||||
|
## 17043-RC1 (2018/05/31)
|
||||||
|
|
||||||
|
* Upgrade to JetBrains License Server 17043
|
||||||
|
|
||||||
## 16429-RC2 (2018/04/20)
|
## 16429-RC2 (2018/04/20)
|
||||||
|
|
||||||
* JetBrains accidentally published 16743. Revert to 16429 (Issue #1)
|
* JetBrains accidentally published 16743. Revert to 16429 (Issue #1)
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
FROM openjdk:8-jre-alpine
|
FROM openjdk:8-jre-alpine
|
||||||
MAINTAINER CrazyMax <crazy-max@users.noreply.github.com>
|
|
||||||
|
|
||||||
ARG BUILD_DATE
|
ARG BUILD_DATE
|
||||||
ARG VCS_REF
|
ARG VCS_REF
|
||||||
ARG VERSION
|
ARG VERSION
|
||||||
|
|
||||||
LABEL org.label-schema.build-date=$BUILD_DATE \
|
LABEL maintainer="CrazyMax" \
|
||||||
|
org.label-schema.build-date=$BUILD_DATE \
|
||||||
org.label-schema.name="jetbrains-license-server" \
|
org.label-schema.name="jetbrains-license-server" \
|
||||||
org.label-schema.description="JetBrains License Server image based on Alpine Linux" \
|
org.label-schema.description="JetBrains License Server" \
|
||||||
org.label-schema.version=$VERSION \
|
org.label-schema.version=$VERSION \
|
||||||
org.label-schema.url="https://github.com/crazy-max/docker-jetbrains-license-server" \
|
org.label-schema.url="https://github.com/crazy-max/docker-jetbrains-license-server" \
|
||||||
org.label-schema.vcs-ref=$VCS_REF \
|
org.label-schema.vcs-ref=$VCS_REF \
|
||||||
@@ -15,16 +15,15 @@ LABEL org.label-schema.build-date=$BUILD_DATE \
|
|||||||
org.label-schema.vendor="CrazyMax" \
|
org.label-schema.vendor="CrazyMax" \
|
||||||
org.label-schema.schema-version="1.0"
|
org.label-schema.schema-version="1.0"
|
||||||
|
|
||||||
RUN apk --update --no-cache add tzdata \
|
|
||||||
&& rm -rf /var/cache/apk/* /tmp/*
|
|
||||||
|
|
||||||
ENV JLS_PATH="/opt/jetbrains-license-server" \
|
ENV JLS_PATH="/opt/jetbrains-license-server" \
|
||||||
JLS_VERSION="16429" \
|
JLS_VERSION="18692" \
|
||||||
JLS_SHA256="4e3c6ecbfd95467e2332589321d259e827db8dfc6a5279f5659e22530cdb6443"
|
JLS_SHA256="e71c4abae7d144dda7af5775dd6812e93d5934de39134d97420b4b0db29e16f4"
|
||||||
|
|
||||||
ADD entrypoint.sh /entrypoint.sh
|
COPY entrypoint.sh /entrypoint.sh
|
||||||
|
|
||||||
RUN apk --update --no-cache add -t build-dependencies \
|
RUN apk --update --no-cache add \
|
||||||
|
tzdata \
|
||||||
|
&& apk --update --no-cache add -t build-dependencies \
|
||||||
curl zip \
|
curl zip \
|
||||||
&& mkdir -p "$JLS_PATH" \
|
&& mkdir -p "$JLS_PATH" \
|
||||||
&& curl -L "https://download.jetbrains.com/lcsrv/license-server-installer.zip" -o "/tmp/jls.zip" \
|
&& curl -L "https://download.jetbrains.com/lcsrv/license-server-installer.zip" -o "/tmp/jls.zip" \
|
||||||
@@ -37,7 +36,7 @@ RUN apk --update --no-cache add -t build-dependencies \
|
|||||||
&& apk del build-dependencies \
|
&& apk del build-dependencies \
|
||||||
&& rm -rf /var/cache/apk/* /tmp/*
|
&& rm -rf /var/cache/apk/* /tmp/*
|
||||||
|
|
||||||
EXPOSE 80
|
EXPOSE 8000
|
||||||
VOLUME [ "/data" ]
|
VOLUME [ "/data" ]
|
||||||
|
|
||||||
ENTRYPOINT [ "/entrypoint.sh" ]
|
ENTRYPOINT [ "/entrypoint.sh" ]
|
||||||
2
LICENSE
2
LICENSE
@@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2018 CrazyMax
|
Copyright (c) 2018-2019 CrazyMax
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
23
README.md
23
README.md
@@ -6,7 +6,7 @@
|
|||||||
<a href="https://hub.docker.com/r/crazymax/jetbrains-license-server/"><img src="https://img.shields.io/docker/stars/crazymax/jetbrains-license-server.svg?style=flat-square" alt="Docker Stars"></a>
|
<a href="https://hub.docker.com/r/crazymax/jetbrains-license-server/"><img src="https://img.shields.io/docker/stars/crazymax/jetbrains-license-server.svg?style=flat-square" alt="Docker Stars"></a>
|
||||||
<a href="https://hub.docker.com/r/crazymax/jetbrains-license-server/"><img src="https://img.shields.io/docker/pulls/crazymax/jetbrains-license-server.svg?style=flat-square" alt="Docker Pulls"></a>
|
<a href="https://hub.docker.com/r/crazymax/jetbrains-license-server/"><img src="https://img.shields.io/docker/pulls/crazymax/jetbrains-license-server.svg?style=flat-square" alt="Docker Pulls"></a>
|
||||||
<a href="https://quay.io/repository/crazymax/jetbrains-license-server"><img src="https://quay.io/repository/crazymax/jetbrains-license-server/status?style=flat-square" alt="Docker Repository on Quay"></a>
|
<a href="https://quay.io/repository/crazymax/jetbrains-license-server"><img src="https://quay.io/repository/crazymax/jetbrains-license-server/status?style=flat-square" alt="Docker Repository on Quay"></a>
|
||||||
<a href="https://beerpay.io/crazy-max/docker-jetbrains-license-server"><img src="https://img.shields.io/beerpay/crazy-max/docker-jetbrains-license-server.svg?style=flat-square" alt="Beerpay"></a>
|
<a href="https://www.codacy.com/app/crazy-max/docker-jetbrains-license-server"><img src="https://img.shields.io/codacy/grade/eb420bc3e6ed49ff97cc261602228efa.svg?style=flat-square" alt="Code Quality"></a>
|
||||||
<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3BXL8EBDJALHQ"><img src="https://img.shields.io/badge/donate-paypal-7057ff.svg?style=flat-square" alt="Donate Paypal"></a>
|
<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3BXL8EBDJALHQ"><img src="https://img.shields.io/badge/donate-paypal-7057ff.svg?style=flat-square" alt="Donate Paypal"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@@ -49,11 +49,13 @@ If you are interested, [check out](https://hub.docker.com/r/crazymax/) my other
|
|||||||
|
|
||||||
### Ports
|
### Ports
|
||||||
|
|
||||||
* `80` : Jetbrains License Server HTTP port
|
* `8000` : Jetbrains License Server HTTP port
|
||||||
|
|
||||||
## Usage
|
## Use this image
|
||||||
|
|
||||||
Docker compose is the recommended way to run this image. You can use the following [docker compose template](docker/docker-compose.yml), then run the container :
|
### Docker Compose
|
||||||
|
|
||||||
|
Docker compose is the recommended way to run this image. Copy the content of folder [examples/compose](examples/compose) in `/var/jls/` on your host for example. Edit the compose and env files with your preferences and run the following commands :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
touch acme.json
|
touch acme.json
|
||||||
@@ -62,10 +64,12 @@ docker-compose up -d
|
|||||||
docker-compose logs -f
|
docker-compose logs -f
|
||||||
```
|
```
|
||||||
|
|
||||||
Or use the following minimal command :
|
### Command line
|
||||||
|
|
||||||
|
You can also use the following minimal command :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker run -d -p 8000:80 --name jetbrains-license-server \
|
$ docker run -d -p 8000:8000 --name jetbrains_license_server \
|
||||||
-e TZ="Europe/Paris" \
|
-e TZ="Europe/Paris" \
|
||||||
-e JLS_VIRTUAL_HOSTS=jetbrains-license-server.example.com \
|
-e JLS_VIRTUAL_HOSTS=jetbrains-license-server.example.com \
|
||||||
-v $(pwd)/data:/data \
|
-v $(pwd)/data:/data \
|
||||||
@@ -95,14 +99,13 @@ Passed value of header "Host" is not allowed. Please contact your license server
|
|||||||
|
|
||||||
That's because the license server is running behind a reverse proxy. Please configure virtual hosts using the `JLS_VIRTUAL_HOSTS` variable.
|
That's because the license server is running behind a reverse proxy. Please configure virtual hosts using the `JLS_VIRTUAL_HOSTS` variable.
|
||||||
|
|
||||||
## How can i help ?
|
## How can I help ?
|
||||||
|
|
||||||
All kinds of contributions are welcomed :raised_hands:!<br />
|
All kinds of contributions are welcome :raised_hands:!<br />
|
||||||
The most basic way to show your support is to star :star2: the project, or to raise issues :speech_balloon:<br />
|
The most basic way to show your support is to star :star2: the project, or to raise issues :speech_balloon:<br />
|
||||||
But we're not gonna lie to each other, I'd rather you buy me a beer or two :beers:!
|
But we're not gonna lie to each other, I'd rather you buy me a beer or two :beers:!
|
||||||
|
|
||||||
[](https://beerpay.io/crazy-max/docker-jetbrains-license-server)
|
[](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3BXL8EBDJALHQ)
|
||||||
or [](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3BXL8EBDJALHQ)
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|||||||
126
build.sh
Executable file
126
build.sh
Executable file
@@ -0,0 +1,126 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
PROJECT=jetbrains-license-server
|
||||||
|
BUILD_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
||||||
|
BUILD_TAG=docker_build
|
||||||
|
BUILD_WORKINGDIR=${BUILD_WORKINGDIR:-.}
|
||||||
|
DOCKERFILE=${DOCKERFILE:-Dockerfile}
|
||||||
|
VCS_REF=${TRAVIS_COMMIT::7}
|
||||||
|
RUNNING_TIMEOUT=120
|
||||||
|
RUNNING_LOG_CHECK="is listening on"
|
||||||
|
|
||||||
|
PUSH_LATEST=${PUSH_LATEST:-true}
|
||||||
|
DOCKER_USERNAME=${DOCKER_USERNAME:-crazymax}
|
||||||
|
DOCKER_LOGIN=${DOCKER_LOGIN:-crazymax}
|
||||||
|
DOCKER_REPONAME=${DOCKER_REPONAME:-jetbrains-license-server}
|
||||||
|
QUAY_USERNAME=${QUAY_USERNAME:-crazymax}
|
||||||
|
QUAY_LOGIN=${QUAY_LOGIN:-crazymax}
|
||||||
|
QUAY_REPONAME=${QUAY_REPONAME:-jetbrains-license-server}
|
||||||
|
|
||||||
|
# Check local or travis
|
||||||
|
BRANCH=${TRAVIS_BRANCH:-local}
|
||||||
|
if [[ ${TRAVIS_PULL_REQUEST} == "true" ]]; then
|
||||||
|
BRANCH=${TRAVIS_PULL_REQUEST_BRANCH}
|
||||||
|
fi
|
||||||
|
DOCKER_TAG=${BRANCH:-local}
|
||||||
|
if [[ "$BRANCH" == "master" ]]; then
|
||||||
|
DOCKER_TAG=latest
|
||||||
|
elif [[ "$BRANCH" == "local" ]]; then
|
||||||
|
BUILD_DATE=
|
||||||
|
VERSION=local
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "PROJECT=${PROJECT}"
|
||||||
|
echo "VERSION=${VERSION}"
|
||||||
|
echo "BUILD_DATE=${BUILD_DATE}"
|
||||||
|
echo "BUILD_TAG=${BUILD_TAG}"
|
||||||
|
echo "BUILD_WORKINGDIR=${BUILD_WORKINGDIR}"
|
||||||
|
echo "DOCKERFILE=${DOCKERFILE}"
|
||||||
|
echo "VCS_REF=${VCS_REF}"
|
||||||
|
echo "PUSH_LATEST=${PUSH_LATEST}"
|
||||||
|
echo "DOCKER_LOGIN=${DOCKER_LOGIN}"
|
||||||
|
echo "DOCKER_USERNAME=${DOCKER_USERNAME}"
|
||||||
|
echo "DOCKER_REPONAME=${DOCKER_REPONAME}"
|
||||||
|
echo "QUAY_LOGIN=${QUAY_LOGIN}"
|
||||||
|
echo "QUAY_USERNAME=${QUAY_USERNAME}"
|
||||||
|
echo "QUAY_REPONAME=${QUAY_REPONAME}"
|
||||||
|
echo "TRAVIS_BRANCH=${TRAVIS_BRANCH}"
|
||||||
|
echo "TRAVIS_PULL_REQUEST=${TRAVIS_PULL_REQUEST}"
|
||||||
|
echo "BRANCH=${BRANCH}"
|
||||||
|
echo "DOCKER_TAG=${DOCKER_TAG}"
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Build
|
||||||
|
echo "### Build"
|
||||||
|
docker build \
|
||||||
|
--build-arg BUILD_DATE=${BUILD_DATE} \
|
||||||
|
--build-arg VCS_REF=${VCS_REF} \
|
||||||
|
--build-arg VERSION=${VERSION} \
|
||||||
|
-t ${BUILD_TAG} -f ${DOCKERFILE} ${BUILD_WORKINGDIR}
|
||||||
|
echo
|
||||||
|
|
||||||
|
echo "### Test"
|
||||||
|
docker rm -f ${PROJECT} > /dev/null 2>&1 || true
|
||||||
|
docker run -d -p 8000:8000 \
|
||||||
|
-e "JLS_VIRTUAL_HOSTS=docker.test" \
|
||||||
|
--name ${PROJECT} ${BUILD_TAG}
|
||||||
|
echo
|
||||||
|
|
||||||
|
echo "### Waiting for ${PROJECT} to be up..."
|
||||||
|
TIMEOUT=$((SECONDS + RUNNING_TIMEOUT))
|
||||||
|
while read LOGLINE; do
|
||||||
|
echo ${LOGLINE}
|
||||||
|
if [[ ${LOGLINE} == *"${RUNNING_LOG_CHECK}"* ]]; then
|
||||||
|
echo "Container up!"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if [[ $SECONDS -gt ${TIMEOUT} ]]; then
|
||||||
|
>&2 echo "ERROR: Failed to run ${PROJECT} container"
|
||||||
|
docker rm -f ${PROJECT} > /dev/null 2>&1 || true
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done < <(docker logs -f ${PROJECT} 2>&1)
|
||||||
|
echo
|
||||||
|
|
||||||
|
CONTAINER_STATUS=$(docker container inspect --format "{{.State.Status}}" ${PROJECT})
|
||||||
|
if [[ ${CONTAINER_STATUS} != "running" ]]; then
|
||||||
|
>&2 echo "ERROR: Container ${PROJECT} returned status '$CONTAINER_STATUS'"
|
||||||
|
docker rm -f ${PROJECT} > /dev/null 2>&1 || true
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
docker rm -f ${PROJECT} > /dev/null 2>&1 || true
|
||||||
|
|
||||||
|
if [ "${VERSION}" == "local" -o "${TRAVIS_PULL_REQUEST}" == "true" ]; then
|
||||||
|
echo "INFO: This is a PR or a local build, skipping push..."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
if [[ ! -z ${DOCKER_PASSWORD} ]]; then
|
||||||
|
echo "### Push to Docker Hub..."
|
||||||
|
echo "$DOCKER_PASSWORD" | docker login --username "$DOCKER_LOGIN" --password-stdin > /dev/null 2>&1
|
||||||
|
if [ "${DOCKER_TAG}" == "latest" -a "${PUSH_LATEST}" == "true" ]; then
|
||||||
|
docker tag ${BUILD_TAG} ${DOCKER_USERNAME}/${DOCKER_REPONAME}:${DOCKER_TAG}
|
||||||
|
fi
|
||||||
|
if [[ "${VERSION}" != "latest" ]]; then
|
||||||
|
docker tag ${BUILD_TAG} ${DOCKER_USERNAME}/${DOCKER_REPONAME}:${VERSION}
|
||||||
|
fi
|
||||||
|
docker push ${DOCKER_USERNAME}/${DOCKER_REPONAME}
|
||||||
|
if [[ ! -z ${MICROBADGER_HOOK} ]]; then
|
||||||
|
echo "Call MicroBadger hook"
|
||||||
|
curl -X POST ${MICROBADGER_HOOK}
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
if [[ ! -z ${QUAY_PASSWORD} ]]; then
|
||||||
|
echo "### Push to Quay..."
|
||||||
|
echo "$QUAY_PASSWORD" | docker login quay.io --username "$QUAY_LOGIN" --password-stdin > /dev/null 2>&1
|
||||||
|
if [ "${DOCKER_TAG}" == "latest" -a "${PUSH_LATEST}" == "true" ]; then
|
||||||
|
docker tag ${BUILD_TAG} quay.io/${QUAY_USERNAME}/${QUAY_REPONAME}:${DOCKER_TAG}
|
||||||
|
fi
|
||||||
|
if [[ "${VERSION}" != "latest" ]]; then
|
||||||
|
docker tag ${BUILD_TAG} quay.io/${QUAY_USERNAME}/${QUAY_REPONAME}:${VERSION}
|
||||||
|
fi
|
||||||
|
docker push quay.io/${QUAY_USERNAME}/${QUAY_REPONAME}
|
||||||
|
echo
|
||||||
|
fi
|
||||||
@@ -1 +0,0 @@
|
|||||||
/docker-compose.yml
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
version: '3'
|
|
||||||
|
|
||||||
services:
|
|
||||||
traefik:
|
|
||||||
image: traefik:alpine
|
|
||||||
command:
|
|
||||||
- --logLevel=INFO
|
|
||||||
- --defaultentrypoints=http,https
|
|
||||||
- --entryPoints=Name:http Address::80 Redirect.EntryPoint:https
|
|
||||||
- --entryPoints=Name:https Address::443 TLS
|
|
||||||
- --docker
|
|
||||||
- --docker.exposedbydefault=false
|
|
||||||
- --docker.domain=example.com
|
|
||||||
- --acme=false
|
|
||||||
- --acme.acmelogging=true
|
|
||||||
- --acme.email=webmaster@example.com
|
|
||||||
- --acme.storage=acme.json
|
|
||||||
- --acme.entryPoint=https
|
|
||||||
- --acme.onhostrule=true
|
|
||||||
- --acme.httpchallenge=true
|
|
||||||
ports:
|
|
||||||
- target: 80
|
|
||||||
published: 80
|
|
||||||
protocol: tcp
|
|
||||||
mode: host
|
|
||||||
- target: 443
|
|
||||||
published: 443
|
|
||||||
protocol: tcp
|
|
||||||
mode: host
|
|
||||||
volumes:
|
|
||||||
- ./acme.json:/acme.json
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
restart: always
|
|
||||||
|
|
||||||
app:
|
|
||||||
image: crazymax/jetbrains-license-server:latest
|
|
||||||
depends_on:
|
|
||||||
- traefik
|
|
||||||
volumes:
|
|
||||||
- jetbrains-license-server:/data
|
|
||||||
labels:
|
|
||||||
- traefik.enable=true
|
|
||||||
- traefik.backend=jetbrains-license-server
|
|
||||||
- traefik.port=80
|
|
||||||
- traefik.frontend.rule=Host:jetbrains-license-server.example.com,an-other-host.example.com
|
|
||||||
environment:
|
|
||||||
- TZ=Europe/Paris
|
|
||||||
- JLS_VIRTUAL_HOSTS=jetbrains-license-server.example.com,an-other-host.example.com
|
|
||||||
- JLS_CONTEXT=/
|
|
||||||
- JLS_ACCESS_CONFIG=/data/access-config.json
|
|
||||||
- JLS_STATS_RECIPIENTS=webmaster@example.com,an-other-address@example.com
|
|
||||||
- JLS_REPORT_OUT_OF_LICENSE=90
|
|
||||||
- JLS_SMTP_SERVER=smtp.example.com
|
|
||||||
- JLS_SMTP_PORT=25
|
|
||||||
- JLS_SMTP_USERNAME=smtp@example.com
|
|
||||||
- JLS_SMTP_PASSWORD=
|
|
||||||
- JLS_STATS_FROM=jetbrains@example.com
|
|
||||||
- JLS_STATS_TOKEN=1BFC67F51AAF99E85C2347B72E62C
|
|
||||||
restart: always
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
jetbrains-license-server:
|
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
TZ=${TZ:-"UTC"}
|
TZ=${TZ:-UTC}
|
||||||
JLS_PATH="/opt/jetbrains-license-server"
|
JLS_PATH="/opt/jetbrains-license-server"
|
||||||
JLS_LISTEN_ADDRESS="0.0.0.0"
|
JLS_LISTEN_ADDRESS="0.0.0.0"
|
||||||
JLS_PORT=80
|
JLS_PORT=8000
|
||||||
JLS_CONTEXT=${JLS_CONTEXT:-"/"}
|
JLS_CONTEXT=${JLS_CONTEXT:-/}
|
||||||
JLS_ACCESS_CONFIG=${JLS_ACCESS_CONFIG:-"/data/access-config.json"}
|
JLS_ACCESS_CONFIG=${JLS_ACCESS_CONFIG:-/data/access-config.json}
|
||||||
|
|
||||||
# Timezone
|
# Timezone
|
||||||
echo "Setting timezone to ${TZ}..."
|
echo "Setting timezone to ${TZ}..."
|
||||||
@@ -39,7 +39,7 @@ fi
|
|||||||
|
|
||||||
# https://www.jetbrains.com/help/license_server/detailed_server_usage_statistics.html
|
# https://www.jetbrains.com/help/license_server/detailed_server_usage_statistics.html
|
||||||
if [ ! -z "$JLS_SMTP_SERVER" -a ! -z "$JLS_STATS_RECIPIENTS" ] ; then
|
if [ ! -z "$JLS_SMTP_SERVER" -a ! -z "$JLS_STATS_RECIPIENTS" ] ; then
|
||||||
JLS_SMTP_PORT=${JLS_SMTP_PORT:-"25"}
|
JLS_SMTP_PORT=${JLS_SMTP_PORT:-25}
|
||||||
echo "Enabling User Reporting via SMTP at $JLS_SMTP_SERVER:$JLS_SMTP_PORT..."
|
echo "Enabling User Reporting via SMTP at $JLS_SMTP_SERVER:$JLS_SMTP_PORT..."
|
||||||
license-server configure --smtp.server ${JLS_SMTP_SERVER} --smtp.server.port ${JLS_SMTP_PORT}
|
license-server configure --smtp.server ${JLS_SMTP_SERVER} --smtp.server.port ${JLS_SMTP_PORT}
|
||||||
|
|
||||||
63
examples/compose/docker-compose.yml
Normal file
63
examples/compose/docker-compose.yml
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
version: "3.2"
|
||||||
|
|
||||||
|
services:
|
||||||
|
traefik:
|
||||||
|
image: traefik:1.7-alpine
|
||||||
|
container_name: traefik
|
||||||
|
command:
|
||||||
|
- "--logLevel=INFO"
|
||||||
|
- "--defaultentrypoints=http,https"
|
||||||
|
- "--entryPoints=Name:http Address::80 Redirect.EntryPoint:https"
|
||||||
|
- "--entryPoints=Name:https Address::443 TLS"
|
||||||
|
- "--docker"
|
||||||
|
- "--docker.exposedbydefault=false"
|
||||||
|
- "--docker.domain=example.com"
|
||||||
|
- "--acme=false"
|
||||||
|
- "--acme.acmelogging=true"
|
||||||
|
- "--acme.email=webmaster@example.com"
|
||||||
|
- "--acme.storage=acme.json"
|
||||||
|
- "--acme.entryPoint=https"
|
||||||
|
- "--acme.onhostrule=true"
|
||||||
|
- "--acme.httpchallenge=true"
|
||||||
|
- "--acme.httpchallenge.entrypoint=http"
|
||||||
|
ports:
|
||||||
|
- target: 80
|
||||||
|
published: 80
|
||||||
|
protocol: tcp
|
||||||
|
- target: 443
|
||||||
|
published: 443
|
||||||
|
protocol: tcp
|
||||||
|
volumes:
|
||||||
|
- "./acme.json:/acme.json"
|
||||||
|
- "/var/run/docker.sock:/var/run/docker.sock"
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
app:
|
||||||
|
image: crazymax/jetbrains-license-server:latest
|
||||||
|
container_name: jetbrains_license_server
|
||||||
|
depends_on:
|
||||||
|
- traefik
|
||||||
|
volumes:
|
||||||
|
- "jetbrains-license-server:/data"
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.backend=jetbrains-license-server"
|
||||||
|
- "traefik.port=8000"
|
||||||
|
- "traefik.frontend.rule=Host:jetbrains-license-server.example.com,an-other-host.example.com"
|
||||||
|
environment:
|
||||||
|
- "TZ=Europe/Paris"
|
||||||
|
- "JLS_VIRTUAL_HOSTS=jetbrains-license-server.example.com,an-other-host.example.com"
|
||||||
|
- "JLS_CONTEXT=/"
|
||||||
|
- "JLS_ACCESS_CONFIG=/data/access-config.json"
|
||||||
|
- "JLS_STATS_RECIPIENTS=webmaster@example.com,an-other-address@example.com"
|
||||||
|
- "JLS_REPORT_OUT_OF_LICENSE=90"
|
||||||
|
- "JLS_SMTP_SERVER=smtp.example.com"
|
||||||
|
- "JLS_SMTP_PORT=25"
|
||||||
|
- "JLS_SMTP_USERNAME=smtp@example.com"
|
||||||
|
- "JLS_SMTP_PASSWORD="
|
||||||
|
- "JLS_STATS_FROM=jetbrains@example.com"
|
||||||
|
- "JLS_STATS_TOKEN=0123456789ABCDEF"
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
jetbrains-license-server:
|
||||||
Reference in New Issue
Block a user