57 Commits

Author SHA1 Message Date
CrazyMax
af04242028 OpenJDK JRE 12
Alpine Linux 3.10
2019-07-22 20:38:02 +02:00
CrazyMax
6d4c483aa5 JetBrains License Server 20267 2019-07-19 11:46:30 +02:00
CrazyMax
2916fa7f0b Add FUNDING 2019-06-23 22:37:09 +02:00
CrazyMax
5fafea24ad Remove MicroBadger 2019-05-01 17:40:23 +02:00
CrazyMax
f514d57a24 GitHub bug report tpl 2019-04-28 20:05:10 +02:00
CrazyMax
6bdad5262c TravisCI notif 2019-04-28 20:04:57 +02:00
CrazyMax
63f898255f Update CHANGELOG 2019-04-02 21:08:10 +02:00
CrazyMax
894524f1dd Merge pull request #16 from crazy-max/19488
JetBrains License Server 19488
2019-04-02 21:05:17 +02:00
CrazyMax
b75cc3adf5 JetBrains License Server 19488 2019-04-02 21:03:57 +02:00
CrazyMax
0add8fa593 Linguist 2019-03-20 00:16:35 +01:00
Joseph Petersen
f5a5f6fd7e Upgrade to JetBrains License Server 19340 (#15) 2019-03-15 19:10:44 +01:00
CrazyMax
9f98240b42 Switch to Travis CI (com) 2019-02-04 21:55:51 +01:00
CrazyMax
04f8c23aad Bind to unprivileged port : 8000 2019-01-22 19:49:15 +01:00
CrazyMax
9789c073b4 Fix vcs ref 2019-01-22 19:48:30 +01:00
CrazyMax
75d3a4974a New year 2019-01-08 21:51:11 +01:00
CrazyMax
f8638dfeef Update build script 2019-01-08 21:51:11 +01:00
CrazyMax
72d583858d Update build script 2019-01-08 21:51:07 +01:00
CrazyMax
e3bacc0eae Merge pull request #10 from casz/master
Upgrade to JetBrains License Server 18692
2018-12-25 11:16:43 +00:00
Joseph Petersen
cd4f386e11 Upgrade to JetBrains License Server 18692 2018-12-25 09:35:20 +01:00
CrazyMax
0dcb334e40 Typo 2018-12-03 04:47:48 +01:00
CrazyMax
f719222449 Chmod build script 2018-12-03 04:47:10 +01:00
CrazyMax
216258c4d1 Review build script 2018-12-03 04:46:49 +01:00
CrazyMax
8883354cfc Optimize layers
Coding style
2018-12-03 04:46:31 +01:00
CrazyMax
09dfb38e2c Update travis 2018-11-25 20:46:46 +01:00
CrazyMax
a24a1d4ecc Codacy 2018-11-18 04:03:54 +01:00
CrazyMax
0821935fea Update travis 2018-09-27 21:27:05 +02:00
CrazyMax
91cb09fbf8 Upgrade to JetBrains License Server 17955 2018-09-26 15:48:49 +02:00
CrazyMax
a8406d7692 Update CHANGELOG 2018-09-05 16:48:04 +02:00
CrazyMax
d2cb392713 Upgrade to JetBrains License Server 17768 2018-09-05 16:45:22 +02:00
CrazyMax
26ab7144ac Spelling 2018-09-01 18:56:41 +02:00
CrazyMax
c626cd1693 Random token 2018-09-01 18:56:33 +02:00
CrazyMax
2f35822bed Formatting travis 2018-09-01 18:56:19 +02:00
CrazyMax
8f52ba7c7b Dockerfile maintainer deprecated 2018-09-01 18:50:20 +02:00
CrazyMax
8c65605ef4 Bump 2018-07-30 16:18:20 +02:00
CrazyMax
ac739e60cf Upgrade to JetBrains License Server 17437 2018-07-30 16:17:47 +02:00
CrazyMax
9752d4b930 Move files 2018-06-29 16:57:39 +02:00
CrazyMax
82d6205bbc Force ACME HTTP challenge since Traefik 1.6 2018-06-29 16:54:35 +02:00
CrazyMax
22a934e981 Update travis 2018-06-29 14:13:54 +02:00
CrazyMax
a0b15ec67c Merge pull request #2 from josefroselinfonova/version-17211
Upgrade to JetBrains License Server 17211
2018-06-29 14:12:51 +02:00
jrosel
7006b09ccd Upgrade to JetBrains License Server 17211 2018-06-29 09:57:56 +02:00
CrazyMax
69a46a5474 Fix compose format 2018-06-13 03:40:43 +02:00
CrazyMax
ee30af239c Update logo 2018-06-07 20:06:25 +02:00
CrazyMax
a06f7633aa Upgrade to JetBrains License Server 17043 2018-05-31 20:59:48 +02:00
CrazyMax
1116df75e5 Remove beerpay infos 2018-05-25 10:45:23 +02:00
CrazyMax
bd0029c87b JetBrains accidentally published 16743. Revert to 16429 (Issue #1) 2018-04-20 17:04:39 +02:00
CrazyMax
00d9088814 Bump 2018-04-20 09:23:50 +02:00
CrazyMax
df68b90d58 Upgrade to JetBrains License Server 16743 2018-04-20 09:22:24 +02:00
CrazyMax
07221d4e58 Replace Nginx + Let's Encrypt with Traefik (see docker-compose) 2018-04-20 09:22:15 +02:00
CrazyMax
0ac0a4c060 Typo 2018-03-20 11:17:30 +01:00
CrazyMax
8265c2539f Upgrade to JetBrains License Server 16429 2018-03-20 11:05:33 +01:00
CrazyMax
1244ac4ad0 Remove build dependencies 2018-02-16 02:25:45 +01:00
CrazyMax
64300ede74 Update docker-compose 2018-02-16 02:09:00 +01:00
CrazyMax
517b60f925 No need of Supervisor 2018-02-16 02:06:26 +01:00
CrazyMax
0440053fa9 Add JLS_REPORT_OUT_OF_LICENSE env var
No need of Supervisor
2018-02-16 02:02:48 +01:00
CrazyMax
a19877c376 Update ignore 2018-02-16 02:02:06 +01:00
CrazyMax
442bad00a3 Update 2018-02-15 22:02:49 +01:00
CrazyMax
45a1cc0557 Add JLS_CONTEXT env var
Ability to set a custom UID / GID
Timezone was not setted
No need of Nginx
Error while saving stats
2018-02-15 16:52:47 +01:00
20 changed files with 418 additions and 217 deletions

14
.dockerignore Normal file
View File

@@ -0,0 +1,14 @@
/.dev
/.idea
/*.iml
/.git
/.res
/examples
/.editorconfig
/.gitignore
/.travis.yml
/build.sh
/CHANGELOG.md
/LICENSE
/README.md

View File

@@ -3,14 +3,11 @@ root = true
[*]
indent_style = space
indent_size = 4
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[{Dockerfile,*.sh,*.yml}]
indent_size = 2
[*.md]
trim_trailing_whitespace = false

1
.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
/*.sh linguist-detectable=false

1
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1 @@
custom: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3BXL8EBDJALHQ

39
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,39 @@
---
name: Bug report
about: Create a report to help us improve
---
### Behaviour
#### Steps to reproduce this issue
1.
2.
3.
#### Expected behaviour
> Tell me what should happen
#### Actual behaviour
> Tell me what happens instead
### Configuration
* Docker version (type `docker --version`) :
* Docker compose version if applicable (type `docker-compose --version`) :
* Platform (Debian 9, Ubuntu 18.04, ...) :
* Include all necessary configuration files : `docker-compose.yml`, `.env`, ...
### Docker info
```
> Output of command `docker info`
```
### Logs
```
> Container logs (set LOG_LEVEL to debug if applicable)
```

30
.github/SUPPORT.md vendored Normal file
View File

@@ -0,0 +1,30 @@
# Support [![](https://isitmaintained.com/badge/resolution/crazy-max/docker-jetbrains-license-server.svg)](https://isitmaintained.com/project/crazy-max/docker-jetbrains-license-server)
## Reporting an issue
Please do a search in [open issues](https://github.com/crazy-max/docker-jetbrains-license-server/issues?utf8=%E2%9C%93&q=) to see if the issue or feature request has already been filed.
If you find your issue already exists, make relevant comments and add your [reaction](https://github.com/blog/2119-add-reactions-to-pull-requests-issues-and-comments). Use a reaction in place of a "+1" comment.
:+1: - upvote
:-1: - downvote
If you cannot find an existing issue that describes your bug or feature, submit an issue using the guidelines below.
## Writing good bug reports and feature requests
File a single issue per problem and feature request.
* Do not enumerate multiple bugs or feature requests in the same issue.
* Do not add your issue as a comment to an existing issue unless it's for the identical input. Many issues look similar, but have different causes.
The more information you can provide, the more likely someone will be successful reproducing the issue and finding a fix.
You are now ready to [create a new issue](https://github.com/crazy-max/docker-jetbrains-license-server/issues/new/choose)!
## Closure policy
* Support directly related to JetBrains License Server will not be provided if your problem is not related to the operation of this image.
* Issues that don't have the information requested above (when applicable) will be closed immediately and the poster directed to the support guidelines.
* Issues that go a week without a response from original poster are subject to closure at my discretion.

5
.gitignore vendored
View File

@@ -1,6 +1,5 @@
/.dev
# Jetbrains
/.idea
/*.iml
# App
/.dev

Binary file not shown.

Before

Width:  |  Height:  |  Size: 110 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

View File

@@ -5,64 +5,25 @@ services:
env:
global:
- VERSION=15802
- GITHUB_REPO=crazy-max/docker-jetbrains-license-server
- VERSION=20267
- DOCKER_LOGIN=crazymax
- DOCKER_USERNAME=crazymax
- DOCKER_REPONAME=jetbrains-license-server
- QUAY_LOGIN=crazymax
- QUAY_USERNAME=crazymax
- 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=
- 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: CRv5ONsqQ7WPkj/AzVId/EnQJVLcnlrAtCACsPisKWgA6QMACaIeVMKrSLP16/GyvERLmyzIGhIlprfmpiNkPeKlzGpJZBjvQ9gyK6YbexITEFjoBOH+rc27kFALCSKxGhr8m+BpHHmcGqCr79v7bFXE0p5TVFn00WbP7CfDjqAiwpcCF1JSDzA0e1mpHk3z7JXceQg9cdhPmhb1GiPMgbONSeTO3ASA9Hmi2JpwYCMaFcDsevVAA+eKSrQEkjYU3L0O4BRVlxUlWHYPSUEZ7vUlgH2imca6pD/WFYEzULj72MLeI9hpLkuXYUVaxLCBPiNoLKCyMIDsAiq5zyhmQyJFFjPo2l/JTKwtO8JCXR7B6sYp8j5gIir4Izbpm8r6VC8SBtafNcgynfehqs9Ov0yBsKKogo3fb/dSWdwANf36jQ766HaBQkp9NN0PFMLzbeXHaQA248MOP6ObqKsFg1c4iJ1UCY9A59hAUyXT+yAm0Y4auxq21/FEZ8pZFqan5qNaxvo0dP8WfeoVdsQAdZ3u7T4wtsxsO8PWKUA4FEoC3Ic9g5DBVte4SQJ5n6Ni2+DFnq4PZhBdCVwWnHh648sUfKncHdmbqTnIq6bN+RI9ZlY8MyeRKVVbbDU9mrmdM2aWlTeu4HQWd7J6ErHrTRDgkRJxKGbPDUemkX4Nhws= # GITHUB_TOKEN
before_install:
- 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
- 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:
- |
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 .
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]/
script: ./build.sh
notifications:
webhooks:
secure: aSAfpOXZ2sZF4lR+e0Pi8O1/ePVft0wwSQm6L2nugmk+bIkZO/iC+SaNTK1rbbiba/zEjSmxvtA+3Sx+Sw9eOPZaP3sm6PvaVycukmZeUeVMlDUDDiV1xKshAisYuheVSO4kvRFzqoSo/IwClukHbGtYO9bquxgfy+Nan5wkzx0rzFDNsSChDbAEcnZKXxSrXSlOYVtY1fRcBTq52BwnBJzE4+6zDDNJz47sJY3dhAToodOpg+LkiX6b8kY8iAtEf25HKGrJ+O7mGLJOrtZmHLBQXAhcMHLNGtajuP3xZe/1Nq/rezRzbD/Tv7breXoIABnHR6y7oGf2Iry46Uzeg758AEYNU4FymD2sDz1zF1362OFBDq50pZm/MG2K4YqrKcWoy+TzCm4+H/XzsXG1jootRj2vsy1/QFL6zI/vVk6ZsN2ISSEFrJ2T/SZZWHxhYihGemfaSLoLZ0o316KrJxmzj37YucYjJYY/b+iAQruAFPJLd3vtanHfTaFQdUiXJdU7rrolESKI1zg/1cx5rV8PrnUZJXrSNATXgoyXsEvDRsdekHg8w+6ml6OenhgrNoJYG1c+GFtCf/cUaKe9bw6WniiqXtgw75Tdz0BqzNTu9BibhnDdeKYFBzT6wgsBRs47fgWcnmy++CryMvWymTdiiDnTaljUGB/rikA9QTk=
email:
recipients:
- travisci@crazymax.dev
on_success: always
on_failure: always

View File

@@ -1,5 +1,71 @@
# Changelog
## 20267-RC2 (2019/07/22)
* OpenJDK JRE 12
* Alpine Linux 3.10
## 20267-RC1 (2019/07/19)
* JetBrains License Server 20267
## 19488-RC1 (2019/04/02)
* JetBrains License Server 19488
## 19340-RC1 (2019/03/15)
* JetBrains License Server 19340
## 18692-RC2 (2019/01/22)
* Bind to unprivileged port : `8000`
## 18692-RC1 (2018/12/25)
* JetBrains License Server 18692
## 17955-RC1 (2018/09/26)
* JetBrains License Server 17955
## 17768-RC1 (2018/09/05)
* JetBrains License Server 17768
## 17437-RC1 (2018/07/30)
* JetBrains License Server 17437
## 17211-RC1 (2018/06/29)
* JetBrains License Server 17211
## 17043-RC1 (2018/05/31)
* JetBrains License Server 17043
## 16429-RC2 (2018/04/20)
* JetBrains accidentally published 16743. Revert to 16429 (Issue #1)
## 16743-RC1 (2018/04/20)
* JetBrains License Server 16743
* Replace Nginx + Let's Encrypt with Traefik (see docker-compose)
## 16429-RC1 (2018/03/20)
* JetBrains License Server 16429
## 15802-RC2 (2018/02/16)
* Add `JLS_CONTEXT` and `JLS_REPORT_OUT_OF_LICENSE` env vars
* Timezone was not setted
* No need of Nginx and Supervisor
* Error while saving stats
* Remove build dependencies
## 15802-RC1 (2018/02/01)
* Initial version based on JetBrains License Server 15802

View File

@@ -1,13 +1,13 @@
FROM openjdk:8-jre-alpine
MAINTAINER CrazyMax <crazy-max@users.noreply.github.com>
FROM adoptopenjdk/openjdk12:alpine-jre
ARG BUILD_DATE
ARG VCS_REF
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.description="JetBrains License Server image based on Alpine Linux" \
org.label-schema.description="JetBrains License Server" \
org.label-schema.version=$VERSION \
org.label-schema.url="https://github.com/crazy-max/docker-jetbrains-license-server" \
org.label-schema.vcs-ref=$VCS_REF \
@@ -15,30 +15,30 @@ LABEL org.label-schema.build-date=$BUILD_DATE \
org.label-schema.vendor="CrazyMax" \
org.label-schema.schema-version="1.0"
RUN apk --update --no-cache add \
ca-certificates curl libressl nginx supervisor tzdata zip \
&& rm -rf /var/cache/apk/* /tmp/*
ENV JLS_PATH="/opt/jetbrains-license-server" \
JLS_VERSION="15802" \
JLS_SHA256="e0030be1fd06e2db19576363a388d8b84e7b33c9d48c54f0cfcdc032ddd96181"
JLS_VERSION="20267" \
JLS_SHA256="5a32e66a05cc52c6ca030de4507b04afedff564e65c47e2fbfe3e7439ab611aa"
ADD entrypoint.sh /entrypoint.sh
ADD assets /
COPY entrypoint.sh /entrypoint.sh
RUN mkdir -p "$JLS_PATH" "/data/registration" "/run/nginx" \
&& curl -L "https://download.jetbrains.com/lcsrv/license-server-installer.zip" -o "/tmp/lsi.zip" \
&& echo "$JLS_SHA256 /tmp/lsi.zip" | sha256sum -c - | grep OK \
&& unzip "/tmp/lsi.zip" -d "$JLS_PATH" \
&& rm -f "/tmp/lsi.zip" \
RUN apk --update --no-cache add \
tzdata \
&& apk --update --no-cache add -t build-dependencies \
curl \
zip \
&& mkdir -p "$JLS_PATH" \
&& curl -L "https://download.jetbrains.com/lcsrv/license-server-installer.zip" -o "/tmp/jls.zip" \
&& echo "$JLS_SHA256 /tmp/jls.zip" | sha256sum -c - | grep OK \
&& unzip "/tmp/jls.zip" -d "$JLS_PATH" \
&& rm -f "/tmp/jls.zip" \
&& chmod a+x "$JLS_PATH/bin/license-server.sh" \
&& ln -sf "$JLS_PATH/bin/license-server.sh" "/usr/local/bin/license-server" \
&& ln -sf "/data/registration" "/root/.jb-license-server" \
&& touch "/data/access-config.json" \
&& chmod a+x /entrypoint.sh
&& chmod a+x /entrypoint.sh \
&& apk del build-dependencies \
&& rm -rf /var/cache/apk/* /tmp/*
EXPOSE 80
EXPOSE 8000
VOLUME [ "/data" ]
ENTRYPOINT [ "/entrypoint.sh" ]
CMD [ "/usr/bin/supervisord", "-c", "/etc/supervisord.conf" ]
CMD [ "/usr/local/bin/license-server", "run" ]

View File

@@ -1,6 +1,6 @@
MIT License
Copyright (c) 2018 CrazyMax
Copyright (c) 2018-2019 CrazyMax
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -1,12 +1,12 @@
<p align="center"><a href="https://github.com/crazy-max/docker-jetbrains-license-server" target="_blank"><img height="128"src="https://raw.githubusercontent.com/crazy-max/docker-jetbrains-license-server/master/.res/docker-jetbrains-license-server.jpg"></a></p>
<p align="center">
<a href="https://microbadger.com/images/crazymax/jetbrains-license-server"><img src="https://images.microbadger.com/badges/version/crazymax/jetbrains-license-server.svg?style=flat-square" alt="Version"></a>
<a href="https://travis-ci.org/crazy-max/docker-jetbrains-license-server"><img src="https://img.shields.io/travis/crazy-max/docker-jetbrains-license-server/master.svg?style=flat-square" alt="Build Status"></a>
<a href="https://hub.docker.com/r/crazymax/jetbrains-license-server/"><img src="https://img.shields.io/badge/dynamic/json.svg?label=version&query=$.results[1].name&url=https://hub.docker.com/v2/repositories/crazymax/jetbrains-license-server/tags&style=flat-square" alt="Latest Version"></a>
<a href="https://travis-ci.com/crazy-max/docker-jetbrains-license-server"><img src="https://img.shields.io/travis/com/crazy-max/docker-jetbrains-license-server/master.svg?style=flat-square" alt="Build Status"></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://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>
</p>
@@ -19,25 +19,25 @@ If you are interested, [check out](https://hub.docker.com/r/crazymax/) my other
### Included
* Nginx reverse proxy
* License server completely customizable via environment variables
* Registration data and configuration in a single directory
### From docker-compose
* Reverse proxy with [nginx-proxy](https://github.com/jwilder/nginx-proxy)
* Creation/renewal of Let's Encrypt certificates automatically with [letsencrypt-nginx-proxy-companion](https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion)
* [Traefik](https://github.com/containous/traefik-library-image) as reverse proxy and creation/renewal of Let's Encrypt certificates
## Docker
### Environment variables
* `TZ` : The timezone assigned to the container (default to `UTC`)
* `JLS_VIRTUAL_HOSTS` : [Virtual hosts](https://www.jetbrains.com/help/license_server/setting_host_and_port.html#d1010e63) where license server will be available (required ; comma delimited for several hosts)
* `JLS_ACCESS_CONFIG` : JSON file to configure [user restrictions](https://www.jetbrains.com/help/license_server/configuring_user_restrictions.html) (default to `/data/access-config.json`)
* `TZ` : The timezone assigned to the container (default `UTC`)
* `JLS_VIRTUAL_HOSTS` : [Virtual hosts](https://www.jetbrains.com/help/license_server/setting_host_and_port.html#d1010e63) where license server will be available (comma delimited for several hosts)
* `JLS_CONTEXT` : [Context path](https://www.jetbrains.com/help/license_server/setting_host_and_port.html#d1010e63) used by the license server (default `/`)
* `JLS_ACCESS_CONFIG` : JSON file to configure [user restrictions](https://www.jetbrains.com/help/license_server/configuring_user_restrictions.html) (default `/data/access-config.json`)
* `JLS_STATS_RECIPIENTS` : [Reports recipients](https://www.jetbrains.com/help/license_server/detailed_server_usage_statistics.html#d461e40) email addresses for stats (comma delimited)
* `JLS_REPORT_OUT_OF_LICENSE` : [Warn about lack of licenses](https://www.jetbrains.com/help/license_server/detailed_server_usage_statistics.html#d461e40) every hour following the percentage threshold (default `0`)
* `JLS_SMTP_SERVER` : SMTP server host to use for sending [stats](https://www.jetbrains.com/help/license_server/detailed_server_usage_statistics.html) (stats disabled if empty)
* `JLS_SMTP_PORT` : SMTP server port (default to `25`)
* `JLS_SMTP_PORT` : SMTP server port (default `25`)
* `JLS_SMTP_USERNAME` : SMTP username (auth disabled if empty)
* `JLS_SMTP_PASSWORD` : SMTP password (auth disabled if empty)
* `JLS_STATS_FROM` : [From address](https://www.jetbrains.com/help/license_server/detailed_server_usage_statistics.html#d461e40) for stats emails
@@ -49,21 +49,27 @@ If you are interested, [check out](https://hub.docker.com/r/crazymax/) my other
### Ports
* `80` : 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-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
touch acme.json
chmod 600 acme.json
docker-compose up -d
docker-compose logs -f
```
Or use the following minimal command :
### Command line
You can also use the following minimal command :
```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 JLS_VIRTUAL_HOSTS=jetbrains-license-server.example.com \
-v $(pwd)/data:/data \
@@ -91,16 +97,15 @@ If you've got the following message :
Passed value of header "Host" is not allowed. Please contact your license server administrator.
```
That's because the license server is running behind the Nginx 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 />
But we're not gonna lie to each other, I'd rather you buy me a beer or two :beers:!
[![Beerpay](https://beerpay.io/crazy-max/docker-jetbrains-license-server/badge.svg?style=beer-square)](https://beerpay.io/crazy-max/docker-jetbrains-license-server)
or [![Paypal](.res/paypal.png)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3BXL8EBDJALHQ)
[![Paypal](.res/paypal.png)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3BXL8EBDJALHQ)
## License

View File

@@ -1,36 +0,0 @@
daemon off;
user nginx;
error_log stderr error;
events {
worker_connections 2048;
use epoll;
}
http {
include mime.types;
default_type application/octet-stream;
aio threads;
sendfile on;
keepalive_timeout 15;
keepalive_disable msie6;
keepalive_requests 100;
tcp_nopush on;
tcp_nodelay on;
server_tokens off;
gzip off;
# https://www.jetbrains.com/help/license_server/configuring_secure_connection.html
server {
listen 80;
location / {
proxy_set_header X-Forwarded-Host $http_host;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:8080/;
}
}
}

View File

@@ -1,25 +0,0 @@
[supervisord]
nodaemon=true
pidfile=/var/run/supervisord.pid
[supervisorctl]
serverurl=unix:///var/run/supervisor.sock
[unix_http_server]
file=/var/run/supervisor.sock
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[program:license-server]
priority=1
command=/usr/local/bin/license-server run
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
redirect_stderr=true
[program:nginx]
command=/usr/sbin/nginx
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
redirect_stderr=true

121
build.sh Executable file
View File

@@ -0,0 +1,121 @@
#!/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}
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

View File

@@ -1,53 +0,0 @@
version: '3'
services:
proxy:
image: jwilder/nginx-proxy:alpine
labels:
- com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true
ports:
- 80:80
- 443:443
volumes:
- ./proxy/conf.d:/etc/nginx/conf.d:rw
- ./proxy/vhost.d:/etc/nginx/vhost.d:rw
- ./proxy/html:/usr/share/nginx/html:rw
- ./proxy/certs:/etc/nginx/certs:ro
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/tmp/docker.sock:ro
restart: always
letsencrypt:
image: jrcs/letsencrypt-nginx-proxy-companion
depends_on:
- proxy
volumes:
- ./proxy/certs:/etc/nginx/certs:rw
- ./proxy/vhost.d:/etc/nginx/vhost.d:rw
- ./proxy/html:/usr/share/nginx/html:rw
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: always
app:
image: crazymax/jetbrains-license-server:latest
depends_on:
- letsencrypt
- proxy
volumes:
- ./data:/data
environment:
- TZ=Europe/Paris
- JLS_VIRTUAL_HOSTS=jetbrains-license-server.example.com,an-other-host.example.com
- JLS_ACCESS_CONFIG=/data/access-config.json
- JLS_STATS_RECIPIENTS=webmaster@example.com,an-other-address@example.com
- 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
- VIRTUAL_HOST=jetbrains-license-server.example.com
- LETSENCRYPT_HOST=jetbrains-license-server.example.com
- LETSENCRYPT_EMAIL=webmaster@example.com
restart: always

View File

@@ -1,13 +1,26 @@
#!/bin/sh
TZ=${TZ:-UTC}
JLS_PATH="/opt/jetbrains-license-server"
JLS_LISTEN_ADDRESS="127.0.0.1"
JLS_PORT=8080
JLS_ACCESS_CONFIG=${JLS_ACCESS_CONFIG:-"/data/access-config.json"}
JLS_LISTEN_ADDRESS="0.0.0.0"
JLS_PORT=8000
JLS_CONTEXT=${JLS_CONTEXT:-/}
JLS_ACCESS_CONFIG=${JLS_ACCESS_CONFIG:-/data/access-config.json}
# Timezone
echo "Setting timezone to ${TZ}..."
ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime
echo ${TZ} > /etc/timezone
# Init
echo "Initializing files and folders..."
mkdir -p /data/registration
ln -sf "/data/registration" "/root/.jb-license-server"
touch "/data/access-config.json"
# https://www.jetbrains.com/help/license_server/setting_host_and_port.html
echo "Configuring Jetbrains License Server..."
license-server configure --listen ${JLS_LISTEN_ADDRESS} --port ${JLS_PORT}
license-server configure --listen ${JLS_LISTEN_ADDRESS} --port ${JLS_PORT} --context ${JLS_CONTEXT}
# https://www.jetbrains.com/help/license_server/setting_host_and_port.html
if [ ! -z "$JLS_VIRTUAL_HOSTS" ] ; then
@@ -26,7 +39,7 @@ fi
# https://www.jetbrains.com/help/license_server/detailed_server_usage_statistics.html
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..."
license-server configure --smtp.server ${JLS_SMTP_SERVER} --smtp.server.port ${JLS_SMTP_PORT}
@@ -41,6 +54,11 @@ if [ ! -z "$JLS_SMTP_SERVER" -a ! -z "$JLS_STATS_RECIPIENTS" ] ; then
license-server configure --stats.from ${JLS_STATS_FROM}
fi
if [ "$JLS_REPORT_OUT_OF_LICENSE" -gt 0 ]; then
echo "Setting report out of licence to $JLS_REPORT_OUT_OF_LICENSE%..."
license-server configure --reporting.out.of.license.threshold ${JLS_REPORT_OUT_OF_LICENSE}
fi
echo "Stats recipients: $JLS_STATS_RECIPIENTS..."
license-server configure --stats.recipients ${JLS_STATS_RECIPIENTS}
fi

View 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: