diff options
author | Mike Crute <crutem@amazon.com> | 2017-06-29 08:33:56 -0700 |
---|---|---|
committer | Mike Crute <crutem@amazon.com> | 2017-06-29 08:33:56 -0700 |
commit | d38dd247f4ca2872655581428239077f71399b4e (patch) | |
tree | 463b8d6012b9dff65e506c534ffa066a0a59dcdd /intellij-idea | |
parent | 3f7e389b5aea056a23b899bbcde3307b0b6feed0 (diff) | |
download | dockerfiles-d38dd247f4ca2872655581428239077f71399b4e.tar.bz2 dockerfiles-d38dd247f4ca2872655581428239077f71399b4e.tar.xz dockerfiles-d38dd247f4ca2872655581428239077f71399b4e.zip |
Add intellij idea
Diffstat (limited to 'intellij-idea')
-rw-r--r-- | intellij-idea/Dockerfile | 31 | ||||
-rw-r--r-- | intellij-idea/Makefile | 17 | ||||
-rwxr-xr-x | intellij-idea/run | 28 |
3 files changed, 76 insertions, 0 deletions
diff --git a/intellij-idea/Dockerfile b/intellij-idea/Dockerfile new file mode 100644 index 0000000..3da5b0d --- /dev/null +++ b/intellij-idea/Dockerfile | |||
@@ -0,0 +1,31 @@ | |||
1 | FROM ubuntu:16.04 | ||
2 | |||
3 | ARG idea_version | ||
4 | |||
5 | RUN export DEBIAN_FRONTEND=noninteractive && \ | ||
6 | # Get core requirements | ||
7 | apt-get update && \ | ||
8 | apt-get install -y apt-utils curl && \ | ||
9 | |||
10 | # Setup user account | ||
11 | groupadd -g 1677955 crutem && \ | ||
12 | useradd -m -d /home/crutem -g crutem -u 1677955 crutem && \ | ||
13 | |||
14 | # Install software | ||
15 | apt-get update && \ | ||
16 | apt-get install -y openjdk-8-jdk && \ | ||
17 | mkdir -p /usr/local/idea && \ | ||
18 | cd /tmp && \ | ||
19 | curl -LO https://download.jetbrains.com/idea/ideaIU-${idea_version}.tar.gz && \ | ||
20 | tar -C /usr/local/idea --strip-components=1 -xvzf ideaIU-${idea_version}.tar.gz && \ | ||
21 | |||
22 | # Cleanup | ||
23 | apt-get clean && \ | ||
24 | rm -rf /var/lib/apt/lists/* && \ | ||
25 | rm -rf /tmp/* | ||
26 | |||
27 | USER crutem | ||
28 | ENV LANG C.UTF-8 | ||
29 | WORKDIR /home/crutem | ||
30 | |||
31 | CMD ["/usr/local/idea/bin/idea.sh"] | ||
diff --git a/intellij-idea/Makefile b/intellij-idea/Makefile new file mode 100644 index 0000000..598366f --- /dev/null +++ b/intellij-idea/Makefile | |||
@@ -0,0 +1,17 @@ | |||
1 | IMAGE=intellij-idea:latest | ||
2 | VERSION=2017.1.4 | ||
3 | REPO=575365190010.dkr.ecr.us-west-2.amazonaws.com | ||
4 | |||
5 | all: | ||
6 | docker build --build-arg=idea_version=$(VERSION) -t $(IMAGE) . | ||
7 | |||
8 | all-no-cache: | ||
9 | docker build --no-cache --build-arg=idea_version=$(VERSION) -t $(IMAGE) . | ||
10 | |||
11 | run: | ||
12 | ./run | ||
13 | |||
14 | publish: | ||
15 | eval $$(aws ecr get-login --region us-west-2) | ||
16 | docker tag $(IMAGE) $(REPO)/$(IMAGE) | ||
17 | docker push $(REPO)/$(IMAGE) | ||
diff --git a/intellij-idea/run b/intellij-idea/run new file mode 100755 index 0000000..9b8a576 --- /dev/null +++ b/intellij-idea/run | |||
@@ -0,0 +1,28 @@ | |||
1 | #!/bin/bash | ||
2 | |||
3 | if [ -z "$DISPLAY" ]; then | ||
4 | echo "\$DISPLAY is not set" | ||
5 | DISPLAYS=( $(netstat -lnt | awk '/127.0.0.1:60/ { split($4,a,":"); print "localhost:" substr(a[2],3) ".0" }') ) | ||
6 | |||
7 | if [ "${#DISPLAYS[@]}" = 0 ]; then | ||
8 | echo "No X11 ports available" | ||
9 | exit 1 | ||
10 | fi | ||
11 | |||
12 | if [ "${#DISPLAYS[@]}" > 1 ]; then | ||
13 | echo "More than 1 X11 port available. Which one do you want?" | ||
14 | for i in "${DISPLAYS[@]}"; do | ||
15 | echo "export DISPLAY=\"$i\"" | ||
16 | done | ||
17 | exit 1 | ||
18 | else | ||
19 | export DISPLAY="${DISPLAYS[0]}" | ||
20 | fi | ||
21 | fi | ||
22 | |||
23 | docker run -ti --rm --net=host \ | ||
24 | -e DISPLAY \ | ||
25 | -e XAUTHORITY=$HOME/.Xauthority \ | ||
26 | -v /usr/share/zoneinfo/America/Los_Angeles:/etc/localtime:ro \ | ||
27 | -v $HOME:$HOME \ | ||
28 | intellij-idea "$@" | ||