Compare commits

...

60 Commits

Author SHA1 Message Date
Geoff Bourne
536a7f6095 [mc] Adapt Forge install run for 1.6-1.10
For #153
2017-05-28 11:37:08 -05:00
Geoff Bourne
df9e725baf [es] Add kibana to the compose example 2017-05-27 10:21:59 -05:00
Geoff Bourne
156716a7d8 Merge branch 'feat/ftb-download-config'
Fixes #151
2017-05-26 20:09:03 -05:00
Geoff Bourne
0876ef7704 Copy additional meta files into FTB directory 2017-05-26 20:07:26 -05:00
Geoff Bourne
5c3ea25ff3 Merge pull request #152 from dschaper/patch-3
Add optional `nogui`
2017-05-20 11:20:20 -05:00
Geoff Bourne
bd8e0cf5d2 Fix FTB download and copy adjusted properties into FTB dir 2017-05-20 10:56:32 -05:00
Dan Schaper
1d5c4e3b0b Check both upper and lower arguments 2017-05-19 21:32:52 -07:00
Dan Schaper
6a565692a0 Add optional nogui
If set via ENV, disable GUI on server.
2017-05-19 19:53:45 -07:00
Geoff Bourne
cf68446a00 Add option to download FTB server zip 2017-05-19 20:44:59 -05:00
Geoff Bourne
c4a92f6706 Merge pull request #150 from jackwilsdon/curl-insecure
Use cURL insecurely when downloading
2017-05-12 17:14:50 -05:00
Jack Wilsdon
7bb397a031 Use cURL insecurely when downloading
This fixes an error caused by the expired certificate on ci.mcadmin.net.
2017-05-12 21:10:57 +01:00
Geoff Bourne
d86f034e96 [mc] Add python package and improve Forge install robustness
For #148
2017-05-08 22:35:37 -05:00
Geoff Bourne
20385507d8 [mc] Add mysql-client package for mods that need it
For #145
2017-05-05 20:46:35 -05:00
Geoff Bourne
91def1176d [mc] Run FTB server in its directory to support legacy
For #144
2017-05-05 20:18:31 -05:00
Geoff Bourne
2e03ee4197 [es] Upgrade to 5.4.0 2017-05-04 21:43:01 -05:00
Geoff Bourne
e8dd60a831 [cass] Remove deprecated image from build script 2017-05-02 19:49:40 -05:00
Geoff Bourne
dc15094b8a [gremlin] Switch to openjdk:8 base 2017-05-02 19:42:47 -05:00
Geoff Bourne
fc807429e4 Merge pull request #143 from ben-st/label
change deprecated maintainer to label
2017-05-02 19:24:12 -05:00
Benjamin
5ec21fc0ba change deprecated maintainer to label 2017-05-02 21:29:17 +02:00
Geoff Bourne
3a0a8a9ced [es] avoid auto-test for now 2017-04-29 14:16:08 -05:00
Geoff Bourne
b9b05dbdfc [es] Upgrade to 5.3.2 2017-04-29 08:17:59 -05:00
Geoff Bourne
179e72cda0 [cass] discontinue cassandra image 2017-04-29 07:52:59 -05:00
Geoff Bourne
2b9514ab0b [es] Upgrade to 5.3.1 2017-04-21 20:08:15 -05:00
Geoff Bourne
8a04a9f72e Merge pull request #141 from gkawamoto/master
Subnet ignoring
2017-04-19 22:10:23 -05:00
Gustavo Kawamoto
3a7af8e8d6 Subnet ignoring
Needed for Cattle support
2017-04-19 09:59:32 -03:00
Geoff Bourne
615d12bce3 [mc] Upgrade to rcon-cli 1.3 2017-04-09 08:30:20 -05:00
Geoff Bourne
72d055ac19 [mc] Add support for DOWNLOAD_*_URL overrides
Also switched from wget to curl
2017-04-08 07:20:04 -05:00
Geoff Bourne
80c18004c1 [mc] Integrate rcon-cli 2017-04-07 19:35:15 -05:00
Geoff Bourne
97e9b2901c [mc] Fixed docker-compose example 2017-04-06 12:41:21 -05:00
Geoff Bourne
027d94cc77 Initial content of minecraft-server container diagram 2017-04-05 10:36:03 -05:00
Geoff Bourne
66261af03d Added Minecraft server containment diagram 2017-04-05 10:31:21 -05:00
Geoff Bourne
290e2c734a [mc] Improved UID/GID handling in passwd/group files
For #136
2017-04-04 22:11:05 -05:00
Geoff Bourne
54d19715c7 [es] Upgrade to 5.3.0 2017-03-28 18:39:21 -05:00
Geoff Bourne
bbe1533f91 [mc] Adjust mem with MEMORY and INIT_/MAX_MEMORY
For #126
2017-03-19 09:35:58 -05:00
Geoff Bourne
97040f61ed [mc] Remove -u from unzip in FTB for Alpine compatibility
For #132
2017-03-09 18:56:19 -06:00
Geoff Bourne
55801ac11c [es] Add ingest node support
For #131
2017-03-03 23:35:12 -06:00
Geoff Bourne
07c32d8ee4 [mc] Fixed TYPE=FORGE for alpine base image
For #128
2017-02-28 18:32:15 -06:00
Geoff Bourne
2e631bcbd9 [es] Upgrade to 5.2.2 2017-02-28 18:12:29 -06:00
Geoff Bourne
c96c630fe5 Merged branch master into master 2017-02-22 16:49:21 -06:00
Geoff Bourne
f69e75cfc1 [mc] Add rcon to big composition 2017-02-22 16:49:08 -06:00
Geoff Bourne
6157a693f1 Merge pull request #115 from ikke-t/alpine
Switch to Alpine linux for container base
2017-02-22 13:23:06 -06:00
Geoff Bourne
854a158d3d Merge branch 'master' into alpine 2017-02-22 13:16:38 -06:00
Geoff Bourne
18919ef33c [mc] Upgrade to Alpine compatible restify 2017-02-22 13:14:48 -06:00
Geoff Bourne
32b0737e70 [mc] Add rcon to docker-compose.yml example 2017-02-18 11:53:44 -06:00
Geoff Bourne
79eb164e90 [mc] Adding example compose file for large minecraft server 2017-02-18 11:00:55 -06:00
Geoff Bourne
e3296c3cc0 [es] Upgrade to 5.2.1 2017-02-15 19:30:33 -06:00
Geoff Bourne
f5dbbcc2c6 [mc] Use G1 GC by default and simplify max memory setting
For #126
2017-02-14 22:15:36 -06:00
Geoff Bourne
134eaedf23 Merge pull request #125 from HenryGessau/FTB
Add Feed-The-Beast (FTB) server modpack support
2017-02-13 22:23:33 -06:00
Henry Gessau
4a89f3c579 Add Feed-The-Beast (FTB) server modpack support
The popular mod site https://www.feed-the-beast.com provides server
modpacks to go with their client modpacks. These server modpacks
include a custom start script that must be used to launch the server.
2017-02-13 22:13:53 -05:00
Geoff Bourne
17420ed590 [es] Added HEALTHCHECK 2017-02-04 14:37:45 -06:00
Geoff Bourne
2125fa0855 [es] Tweak spacing on README 2017-02-02 20:53:47 -06:00
Geoff Bourne
5c14c30a78 [es] Include docker stack deploy instructions 2017-02-02 20:48:17 -06:00
Geoff Bourne
788d06c086 [es] Upgrade to 5.2.0
For #124
2017-02-02 20:28:12 -06:00
Geoff Bourne
1a88c96beb Merged branch master into master 2017-02-02 19:31:11 -06:00
Geoff Bourne
b8d69278e4 [es] Fix address binding for Swarm Mode 2017-01-23 10:25:50 -06:00
Geoff Bourne
4a7ecffcbb [es][kibana] Upgrade to 5.1.2 2017-01-15 07:04:27 -06:00
Geoff Bourne
9fe0021a7a [mc] Upgrade base image to openjdk
Fixes #122
2017-01-12 19:40:58 -06:00
Ilkka Tengvall
2d8b3d7275 Remove commented lines 2016-12-07 19:10:18 +02:00
Ilkka Tengvall
f48eedee78 restored the java heap size
I reduced it for RasPi, but forgot it low here too. Restored.
2016-12-07 19:06:01 +02:00
Ilkka Tengvall
08d459c373 changed to work on alpine container 2016-12-07 00:31:06 +02:00
29 changed files with 563 additions and 196 deletions

View File

@@ -1,6 +1,10 @@
dockerfiles
===========
Contains the various Dockerfile definitions I'm maintaining.
This repository contains the various Dockerfile definitions I'm maintaining.
[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/itzg/dockerfiles?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
### Discontinued
##### Cassandra
I have found the [official image](https://hub.docker.com/_/cassandra/) to be quite sufficient

2
build
View File

@@ -5,10 +5,8 @@ pkgs="$pkgs minecraft-server"
pkgs="$pkgs elasticsearch"
pkgs="$pkgs kibana"
pkgs="$pkgs titan-gremlin"
pkgs="$pkgs cassandra"
for p in $pkgs
do
docker build -t itzg/$p $p
done

View File

@@ -1,26 +0,0 @@
FROM java:openjdk-8u72-jdk
MAINTAINER itzg
ENV CASSANDRA_VERSION 2.2.8
ADD http://apache.mirrors.pair.com/cassandra/$CASSANDRA_VERSION/apache-cassandra-$CASSANDRA_VERSION-bin.tar.gz /tmp/apache-cassandra.tgz
RUN tar -C /opt -zxf /tmp/apache-cassandra.tgz && \
rm /tmp/apache-cassandra.tgz
RUN mv /opt/apache-cassandra-$CASSANDRA_VERSION /opt/cassandra
ENV CASSANDRA_HOME /opt/cassandra
ENV CASSANDRA_CONF /conf
ENV CASSANDRA_DATA /data
WORKDIR $CASSANDRA_HOME
RUN ln -s $CASSANDRA_HOME/bin/* /usr/local/bin
VOLUME ["/data","/conf"]
EXPOSE 9042 9160 7000 7001
ADD cassandra.in.sh $CASSANDRA_HOME/cassandra.in.sh
RUN mv $CASSANDRA_HOME/bin/cassandra.in.sh $CASSANDRA_HOME/bin/orig.cassandra.in.sh
CMD ["/opt/cassandra/bin/cassandra", "-f"]

View File

@@ -1,9 +0,0 @@
Yet another Cassandra image, but this one got container and non-container access right.
# Basic Usage
To support access from both Docker containers and external, non-Docker clients:
docker run -d --name cassandra -e PUBLISH_AS=192.168.59.103 -p 9160:9160 itzg/cassandra
replacing `192.168.59.103` with your Docker host's LAN IP address.

View File

@@ -1,24 +0,0 @@
#!/bin/bash
cassYml=$CASSANDRA_HOME/conf/cassandra.yaml
privateAddr=$(hostname -i)
seeds=${SEEDS:-${PUBLISH_AS:-$privateAddr}}
sed -i -e "s/- seeds:.*/- seeds: \"$seeds\"/" \
-e "s/listen_address:.*/listen_address: $privateAddr/" \
-e "s/rpc_address:.*/rpc_address: $privateAddr/" \
-e "s/start_rpc:.*/start_rpc: true/" \
-e "s#- /var/lib/cassandra/data#- $CASSANDRA_DATA#" \
$cassYml
if [ -n "$PUBLISH_AS" ]; then
sed -i -e "s/\(\s*#\)\?\s*broadcast_address:.*/broadcast_address: $PUBLISH_AS/" $cassYml
fi
# Copy over our tweaked files, but non-clobbering to let user have ultimate control
cp -rn $CASSANDRA_HOME/conf/* $CASSANDRA_CONF
# source the original
. $CASSANDRA_HOME/bin/orig.cassandra.in.sh

View File

@@ -1,10 +1,10 @@
FROM openjdk:8u111-jre-alpine
FROM openjdk:8u121-jre-alpine
MAINTAINER itzg
LABEL maintainer "itzg"
RUN apk -U add bash
ENV ES_VERSION=5.1.1
ENV ES_VERSION=5.4.0
ADD https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-$ES_VERSION.tar.gz /tmp/es.tgz
RUN cd /usr/share && \
@@ -13,10 +13,10 @@ RUN cd /usr/share && \
EXPOSE 9200 9300
HEALTHCHECK --timeout=5s CMD wget -q -O - http://$HOSTNAME:9200/_cat/health
ENV ES_HOME=/usr/share/elasticsearch-$ES_VERSION \
DEFAULT_ES_USER=elasticsearch \
DISCOVER_TRANSPORT_IP=eth0 \
DISCOVER_HTTP_IP=eth0 \
ES_JAVA_OPTS="-Xms1g -Xmx1g"
RUN adduser -S -s /bin/sh $DEFAULT_ES_USER

View File

@@ -54,6 +54,40 @@ and then check the cluster health, such as http://192.168.99.100:9200/_cluster/h
"unassigned_shards" : 0
}
If you have a Docker Swarm cluster already initialized you can download this
[docker-compose.yml](https://raw.githubusercontent.com/itzg/dockerfiles/master/elasticsearch/docker-compose.yml) and deploy a cluster using:
docker stack deploy -c docker-compose.yml es
With a `docker service ls` you can confirm 1 master, 2 data, and 1 gateway nodes are running:
```
ID NAME MODE REPLICAS IMAGE
9nwnno8hbqgk es_kibana replicated 1/1 kibana:latest
f5x7nipwmvkr es_gateway replicated 1/1 es
om8rly2yxylw es_data replicated 2/2 es
tdvfilj370yn es_master replicated 1/1 es
```
As you can see, there is also a Kibana instance included and available at port 5601.
# Health Checks
This container declares a [HEALTHCHECK](https://docs.docker.com/engine/reference/builder/#/healthcheck) that queries the `_cat/health`
endpoint for a quick, one-line gauge of health every 30 seconds.
The current health of the container is shown in the `STATUS` column of `docker ps`, such as
Up 14 minutes (healthy)
You can also check the history of health checks from `inspect`, such as:
```
> docker inspect -f "{{json .State.Health}}" es
{"Status":"healthy","FailingStreak":0,"Log":[...
```
# Configuration Summary
## Ports
@@ -147,12 +181,13 @@ To simplify all that, this image provides a `TYPE` variable to let you amongst t
* `MASTER` : master-eligible, but holds no data. It is good to have three or more of these in a
large cluster
* `DATA` (or `NON_MASTER`) : holds data and serves search/index requests. Scale these out for elastic-y goodness.
* `GATEWAY` : only operates as a client node or a "smart router". These are the ones whose HTTP port 9200 will need to be exposed
* `GATEWAY` (or `COORDINATING`) : only operates as a client node or a "smart router". These are the ones whose HTTP port 9200 will need to be exposed
* `INGEST` : operates only as an ingest node and is not master or data eligble
A [Docker Compose](https://docs.docker.com/compose/overview/) file will serve as a good example of these three node types:
```
version: '2'
version: '3'
services:
gateway:
@@ -175,6 +210,14 @@ services:
environment:
UNICAST_HOSTS: master,gateway
TYPE: DATA
kibana:
image: kibana
ports:
- "5601:5601"
environment:
ELASTICSEARCH_URL: http://gateway:9200
```
## Minimum Master Nodes
@@ -187,20 +230,16 @@ Using the Docker Compose file above, a value of `2` is appropriate when scaling
docker-compose scale master=3
## Auto transport/http discovery with Swarm Mode
## Multiple Network Binding, such as Swarm Mode
When using Docker Swarm mode (starting with 1.12), the overlay and ingress network interfaces are assigned
multiple IP addresses. As a result, it creates confusion for the transport publish logic even when using
the special value `_eth0_`.
When using Docker Swarm mode the container is presented with multiple ethernet
devices. By default, all global, routable IP addresses are configured for
Elasticsearch to use as `network.host`.
To resolve this, add
That discovery can be overridden by providing a specific ethernet device name
to `DISCOVER_TRANSPORT_IP` and/or `DISCOVER_HTTP_IP`, such as
-e DISCOVER_TRANSPORT_IP=eth0
replacing `eth0` with another interface within the container, if needed.
The same can be done for publish/binding of the http module by adding:
-e DISCOVER_HTTP_IP=eth2
## Heap size and other JVM options

View File

@@ -0,0 +1,44 @@
version: '3'
services:
master:
build: .
environment:
TYPE: MASTER
UNICAST_HOSTS: master
MIN_MASTERS: 1
deploy:
replicas: 1
update_config:
parallelism: 1
data:
build: .
environment:
TYPE: DATA
UNICAST_HOSTS: master
deploy:
replicas: 2
update_config:
parallelism: 1
delay: 60s
gateway:
build: .
ports:
- "9200:9200"
- "9300:9300"
environment:
TYPE: GATEWAY
UNICAST_HOSTS: master
ingest:
build: .
ports:
- "9222:9200"
environment:
TYPE: INGEST
UNICAST_HOSTS: master
kibana:
image: kibana
ports:
- "5601:5601"
environment:
ELASTICSEARCH_URL: http://gateway:9200

View File

@@ -0,0 +1,44 @@
version: '3'
services:
master:
image: itzg/elasticsearch
environment:
TYPE: MASTER
UNICAST_HOSTS: master
MIN_MASTERS: 1
deploy:
replicas: 1
update_config:
parallelism: 1
data:
image: itzg/elasticsearch
environment:
TYPE: DATA
UNICAST_HOSTS: master
deploy:
replicas: 2
update_config:
parallelism: 1
delay: 60s
gateway:
image: itzg/elasticsearch
ports:
- "9200:9200"
- "9300:9300"
environment:
TYPE: GATEWAY
UNICAST_HOSTS: master
ingest:
image: itzg/elasticsearch
ports:
- "9222:9200"
environment:
TYPE: INGEST
UNICAST_HOSTS: master
kibana:
image: kibana
ports:
- "5601:5601"
environment:
ELASTICSEARCH_URL: http://gateway:9200

View File

@@ -19,6 +19,22 @@ discoverIpFromLink() {
OPTS="$OPTS -E $mode.host=$ip"
}
discoverAllGlobalIps() {
if [ ${#IGNORE_NETWORK} -eq 0 ]
then
IGNORE_NETWORK='999.999.999.999'
fi
printf "Finding IPs"
while [ ${#ips} -eq 0 ]
do
printf "."
ips=`ipaddr show scope global| grep -v "inet ${IGNORE_NETWORK}" | awk '$1 == "inet" { if (!match($2,"/32")) { gsub("/.*","",$2) ; addrs[length(addrs)] = $2 } } END { for (i in addrs) { if (i>0) printf "," ; printf addrs[i] } }'`
sleep 1
done
echo " found! $ips"
OPTS="$OPTS -E network.host=$ips"
}
setup_clustering() {
if [ -n "$CLUSTER" ]; then
@@ -72,15 +88,19 @@ setup_personality() {
if [ -n "$TYPE" ]; then
case $TYPE in
MASTER)
OPTS="$OPTS -E node.master=true -E node.data=false"
OPTS="$OPTS -E node.master=true -E node.data=false -E node.ingest=false"
;;
GATEWAY)
OPTS="$OPTS -E node.master=false -E node.data=false"
GATEWAY|COORDINATING)
OPTS="$OPTS -E node.master=false -E node.data=false -E node.ingest=false"
;;
INGEST)
OPTS="$OPTS -E node.master=false -E node.data=false -E node.ingest=true"
;;
DATA|NON_MASTER)
OPTS="$OPTS -E node.master=false -E node.data=true"
OPTS="$OPTS -E node.master=false -E node.data=true -E node.ingest=false"
;;
*)
@@ -112,8 +132,13 @@ OPTS="$OPTS \
-E transport.tcp.port=9300 \
-E http.port=9200"
discoverIpFromLink $DISCOVER_TRANSPORT_IP transport
discoverIpFromLink $DISCOVER_HTTP_IP http
discoverAllGlobalIps
if [ "${DISCOVER_TRANSPORT_IP}" != "" ]; then
discoverIpFromLink $DISCOVER_TRANSPORT_IP transport
fi
if [ "${DISCOVER_HTTP_IP}" != "" ]; then
discoverIpFromLink $DISCOVER_HTTP_IP http
fi
setup_personality
setup_clustering

View File

@@ -1,18 +1,18 @@
FROM java:8
MAINTAINER itzg
LABEL maintainer "itzg"
ENV GITBLIT_VERSION 1.7.1
RUN wget -qO /tmp/gitblit.tgz http://dl.bintray.com/gitblit/releases/gitblit-$GITBLIT_VERSION.tar.gz
RUN tar -C /opt -xvf /tmp/gitblit.tgz && \
rm /tmp/gitblit.tgz
VOLUME ["/data"]
ADD start.sh /start
ENV GITBLIT_PATH=/opt/gitblit-${GITBLIT_VERSION} \
GITBLIT_HTTPS_PORT=443 \
GITBLIT_HTTP_PORT=80 \
@@ -20,7 +20,7 @@ ENV GITBLIT_PATH=/opt/gitblit-${GITBLIT_VERSION} \
GITBLIT_ADMIN_USER=admin \
GITBLIT_INITIAL_REPO=
WORKDIR $GITBLIT_PATH
EXPOSE 80 443
ENTRYPOINT ["/start"]

View File

@@ -1,6 +1,6 @@
FROM itzg/ubuntu-openjdk-7
MAINTAINER itzg
LABEL maintainer "itzg"
RUN apt-get install -y curl unzip

View File

@@ -1,6 +1,6 @@
FROM ubuntu:trusty
MAINTAINER itzg
LABEL maintainer "itzg"
ENV APT_GET_UPDATE 2014-09-18
@@ -21,4 +21,3 @@ EXPOSE 4000
ADD start.sh /start
CMD ["/start"]

View File

@@ -1,6 +1,6 @@
FROM java:openjdk-8u102-jdk
MAINTAINER itzg
LABEL maintainer "itzg"
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y \

View File

@@ -1,8 +1,8 @@
FROM openjdk:8u111-jre
MAINTAINER itzg
LABEL maintainer "itzg"
ENV KIBANA_VERSION 5.1.1
ENV KIBANA_VERSION 5.1.2
ADD https://artifacts.elastic.co/downloads/kibana/kibana-${KIBANA_VERSION}-linux-x86_64.tar.gz /tmp/kibana.tgz

View File

@@ -0,0 +1,12 @@
version: '2'
services:
es:
build: ../elasticsearch
ports:
- "9200:9200"
kibana:
build: .
ports:
- "5601:5601"

View File

@@ -1,6 +1,6 @@
FROM itzg/ubuntu-openjdk-7
MAINTAINER itzg
LABEL maintainer "itzg"
ENV LOGSTASH_VERSION 1.5.0-1

View File

@@ -1,30 +1,36 @@
FROM java:8
FROM alpine
MAINTAINER itzg
ENV APT_GET_UPDATE 2016-04-23
RUN apt-get update
LABEL maintainer "itzg"
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y \
imagemagick \
lsof \
nano \
sudo \
vim \
jq \
&& apt-get clean
RUN echo "http://dl-3.alpinelinux.org/alpine/v3.5/community/" >> /etc/apk/repositories &&\
apk update && \
apk add \
openjdk8-jre-base \
openssl \
imagemagick \
lsof \
su-exec \
bash \
curl \
git \
jq \
mysql-client \
python python-dev && \
rm -rf /var/cache/apk/*
RUN useradd -s /bin/false --uid 1000 minecraft \
RUN addgroup -g 1000 minecraft \
&& adduser -Ss /bin/false -u 1000 -G minecraft -h /home/minecraft minecraft \
&& mkdir /data \
&& mkdir /config \
&& mkdir /mods \
&& mkdir /plugins \
&& mkdir /home/minecraft \
&& chown minecraft:minecraft /data /config /mods /plugins /home/minecraft
EXPOSE 25565 25575
ADD https://github.com/itzg/restify/releases/download/1.0.3/restify_linux_amd64 /usr/local/bin/restify
ADD https://github.com/itzg/restify/releases/download/1.0.4/restify_linux_amd64 /usr/local/bin/restify
ADD https://github.com/itzg/rcon-cli/releases/download/1.3/rcon-cli_linux_amd64 /usr/local/bin/rcon-cli
COPY start.sh /start
COPY start-minecraft.sh /start-minecraft
COPY mcadmin.jq /usr/share
@@ -38,6 +44,7 @@ ENTRYPOINT [ "/start" ]
ENV UID=1000 GID=1000 \
MOTD="A Minecraft Server Powered by Docker" \
JVM_OPTS="-Xmx1024M -Xms1024M" \
JVM_XX_OPTS="-XX:+UseG1GC" MEMORY="1G" \
TYPE=VANILLA VERSION=LATEST FORGEVERSION=RECOMMENDED LEVEL=world PVP=true DIFFICULTY=easy \
ENABLE_RCON=true RCON_PORT=25575 RCON_PASSWORD=minecraft \
LEVEL_TYPE=DEFAULT GENERATOR_SETTINGS= WORLD= MODPACK= ONLINE_MODE=TRUE CONSOLE=true

View File

@@ -0,0 +1 @@
<mxfile userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36" version="6.4.4" editor="www.draw.io" type="github"><diagram name="Page-1">1VVNc5swEP01HDMDUiDOMbGd5pK2Ux96VkGAxgJRIRvcX9+VWD40ODOZ1j0Uz9jS2w+t3ts1Ad1W/SfNmvJNZVwGJMz6gO4CQjZRCN8WuAxA8vgwAIUW2QBFM3AQvziCGFecRMZbz9EoJY1ofDBVdc1T42FMa9X5brmS/qkNK/gKOKRMrtHvIjMlolEYzoZXLooSj97EaPjB0mOh1anG8wJCc/cM5oqNudC/LVmmugVE9wHdaqXMsKr6LZeW2pG2Ie7lHetUt+a1+UgAGQLOTJ74WHEiIfQ5E2dbn7kgJ8nPky3q2fDe3DEpijqgT+AheW5mK6wK/HVZ2obVI7ZT6ZFrCHlVrRkdoLSlzwJ2BYwo8WohXSkMPzQstfsOWhCcSlNJ2EX21JFVu8mFlFsllXahdJ/YD+Bnro0AyZ+Gu+yMslnwZjt3LVd/KurCpgptLlWbA5aBXNs0vH+X/mgSFWaFq4obfQEXDKDYBhd/2809RzeIlYt2mxwZ9nkxZZ61hgXKfV16upK+EjBMmuXmruX67KSCATMMYL2SwDU5z5DkvxAE52NNvdHqyBeOoXs8UWIbplP8A3ES3UCVja/K41oVEl5RJYpuoMr9SpU34B+Qr0rD0ITD0JE4TuI/nopwLcKLexYi6OFet6CT3Pt8TjwtCI3IFUJv0eXxis9v2y+fr/D58P/yGf87PmE7v4ycbfHCp/vf</diagram></mxfile>

View File

@@ -35,6 +35,24 @@ With that you can easily view the logs, stop, or re-start the container:
## Interacting with the server
[RCON](http://wiki.vg/RCON) is enabled by default, so you can `exec` into the container to
access the Minecraft server console:
```
docker exec -i mc rcon-cli
```
Note: The `-i` is required for interactive use of rcon-cli.
To run a simple, one-shot command, such as stopping a Minecraft server, pass the command as
arguments to `rcon-cli`, such as:
```
docker exec mc rcon-cli stop
```
_The `-i` is not needed in this case._
In order to attach and interact with the Minecraft server, add `-it` when starting the container, such as
docker run -d -it -p 25565:25565 --name mc itzg/minecraft-server
@@ -159,6 +177,10 @@ Enable Bukkit/Spigot server mode by adding a `-e TYPE=BUKKIT -e VERSION=1.8` or
-e TYPE=SPIGOT -e VERSION=1.8 \
-p 25565:25565 -e EULA=TRUE --name mc itzg/minecraft-server
If you are hosting your own copy of Bukkit/Spigot you can override the download URLs with:
* -e BUKKIT_DOWNLOAD_URL=<url>
* -e SPIGOT_DOWNLOAD_URL=<url>
You can build spigot from source by adding `-e BUILD_FROM_SOURCE=true`
__NOTE: to avoid pegging the CPU when running Spigot,__ you will need to
@@ -224,6 +246,9 @@ pass `--noconsole` at the very end of the command line and not use `-it`. For ex
-e TYPE=PAPER -e VERSION=1.9.4 \
-p 25565:25565 -e EULA=TRUE --name mc itzg/minecraft-server --noconsole
If you are hosting your own copy of PaperSpigot you can override the download URL with:
* -e PAPER_DOWNLOAD_URL=<url>
You can install Bukkit plugins in two ways...
### Using the /data volume
@@ -264,6 +289,72 @@ This works well if you want to have a common set of plugins in a separate
location, but still have multiple worlds with different server requirements
in either persistent volumes or a downloadable archive.
## Running a Server with a Feed-The-Beast (FTB) modpack
Enable this server mode by adding a `-e TYPE=FTB` to your command-line,
but note the following additional steps needed...
You need to specify a modpack to run, using the `FTB_SERVER_MOD` environment
variable. An FTB server modpack is available together with its respective
client modpack on https://www.feed-the-beast.com under "Additional Files."
Because of the interactive delayed download mechanism on that web site, you
must manually download the server modpack. Copy the modpack to the `/data`
directory (see "Attaching data directory to host filesystem”).
Now you can add a `-e FTB_SERVER_MOD=name_of_modpack.zip` to your command-line.
$ docker run -d -v /path/on/host:/data -e TYPE=FTB \
-e FTB_SERVER_MOD=FTBPresentsSkyfactory3Server_3.0.6.zip \
-p 25565:25565 -e EULA=TRUE --name mc itzg/minecraft-server
Instead of explicitly downloading a modpack from the Feed the Beast site, you
can you set `FTB_SERVER_MOD` to the **server** URL of a modpack, such as
$ docker run ... \
-e TYPE=FTB \
-e FTB_SERVER_MOD=https://www.feed-the-beast.com/projects/ftb-infinity-lite-1-10/files/2402889
### Using the /data volume
You must use a persistent `/data` mount for this type of server.
To do this, you will need to attach the container's `/data` directory
(see "Attaching data directory to host filesystem”).
If the modpack is updated and you want to run the new version on your
server, you stop and remove the container:
docker stop mc
docker rm mc
Do not erase anything from your /data directory (unless you know of
specific mods that have been removed from the modpack). Download the
updated FTB server modpack and copy it to `/data`. Start a new container
with `FTB_SERVER_MOD` specifying the updated modpack file.
$ docker run -d -v /path/on/host:/data -e TYPE=FTB \
-e FTB_SERVER_MOD=FTBPresentsSkyfactory3Server_3.0.7.zip \
-p 25565:25565 -e EULA=TRUE --name mc itzg/minecraft-server
### FTB server JVM options
An FTB server modpack contains its own startup script that launches the
JVM and it does not use the `JVM_OPTS` environment variable. Instead
you can use `MIN_RAM` and `MAX_RAM` variables. These are appended to
the JVM `-Xms` and `-Xmx` options. For example, `-e MIN_RAM=2G` results
in `-Xms2G` passed to the JVM.
Additionally, `PERMGEN_SIZE` is passed on to `-XX:PermSize`. Here is an
example:
$ docker run -d -v /path/on/host:/data -e TYPE=FTB \
-e MIN_RAM=1G -e MAX_RAM=2G -e PERMGEN_SIZE=512M \
-e FTB_SERVER_MOD=FTBPresentsSkyfactory3Server_3.0.6.zip \
-p 25565:25565 -e EULA=TRUE --name mc itzg/minecraft-server
Note: The FTB server start script will also override other options,
like `MOTD`.
## Using Docker Compose
Rather than type the server options below, the port mappings above, etc
@@ -290,7 +381,7 @@ minecraft-server:
and in the same directory as that file run
docker-compose -d up
docker-compose up -d
Now, go play...or adjust the `environment` section to configure
this server instance.
@@ -549,10 +640,16 @@ By default, server checks connecting players against Minecraft's account databas
### Memory Limit
The Java memory limit can be adjusted using the `JVM_OPTS` environment variable, where the default is
the setting shown in the example (max and min at 1024 MB):
By default, the image declares a Java initial and maximum memory limit of 1 GB. There are several
ways to adjust the memory settings:
docker run -e 'JVM_OPTS=-Xmx1024M -Xms1024M' ...
* `MEMORY`, "1G" by default, can be used to adjust both initial (`Xms`) and max (`Xmx`)
memory settings of the JVM
* `INIT_MEMORY`, independently sets the initial heap size
* `MAX_MEMORY`, independently sets the max heap size
The values of all three are passed directly to the JVM and support format/units as
`<size>[g|G|m|M|k|K]`.
### /data ownership

View File

@@ -0,0 +1,29 @@
version: '3'
services:
minecraft:
ports:
- "25565:25565"
volumes:
- "mcbig:/data"
environment:
EULA: "TRUE"
MAX_MEMORY: 32G
MAX_BUILD_HEIGHT: 256
VIEW_DISTANCE: 15
LEVEL_TYPE: LARGEBIOMES
MAX_PLAYERS: 100
CONSOLE: "false"
image: itzg/minecraft-server
restart: always
rcon:
image: itzg/rcon
ports:
- "4326:4326"
- "4327:4327"
volumes:
- "rcon:/opt/rcon-web-admin/db"
volumes:
mcbig:
rcon:

View File

@@ -1,14 +1,27 @@
minecraft-server:
ports:
- "25565:25565"
version: '3'
environment:
EULA: "TRUE"
services:
minecraft:
image: itzg/minecraft-server
ports:
- "25565:25565"
volumes:
- "mc:/data"
environment:
EULA: "TRUE"
CONSOLE: "false"
ENABLE_RCON: "true"
RCON_PASSWORD: "testing"
RCON_PORT: 28016
restart: always
rcon:
image: itzg/rcon
ports:
- "4326:4326"
- "4327:4327"
volumes:
- "rcon:/opt/rcon-web-admin/db"
image: itzg/minecraft-server
container_name: minecraft-server
tty: true
stdin_open: true
restart: always
volumes:
mc:
rcon:

View File

@@ -1,7 +1,7 @@
.[] |
select(.elements | length > 1) |
select(.elements[].elements[] | select(.class == "version" and .text == $version)) |
.elements[].elements[] |
.elements[].elements[] |
select(.class|contains("server-jar")) |
.elements[] | select(.name="a") |
.href

View File

@@ -18,21 +18,23 @@ if [ ! -e /data/eula.txt ]; then
fi
fi
SERVER_PROPERTIES=/data/server.properties
FTB_DIR=/data/FeedTheBeast
VERSIONS_JSON=https://launchermeta.mojang.com/mc/game/version_manifest.json
echo "Checking version information."
case "X$VERSION" in
X|XLATEST|Xlatest)
VANILLA_VERSION=`curl -sSL $VERSIONS_JSON | jq -r '.latest.release'`
VANILLA_VERSION=`curl -fsSL $VERSIONS_JSON | jq -r '.latest.release'`
;;
XSNAPSHOT|Xsnapshot)
VANILLA_VERSION=`curl -sSL $VERSIONS_JSON | jq -r '.latest.snapshot'`
VANILLA_VERSION=`curl -fsSL $VERSIONS_JSON | jq -r '.latest.snapshot'`
;;
X[1-9]*)
VANILLA_VERSION=$VERSION
;;
*)
VANILLA_VERSION=`curl -sSL $VERSIONS_JSON | jq -r '.latest.release'`
VANILLA_VERSION=`curl -fsSL $VERSIONS_JSON | jq -r '.latest.release'`
;;
esac
@@ -56,28 +58,32 @@ function downloadSpigot {
case "$TYPE" in
*BUKKIT|*bukkit)
match="Craftbukkit"
downloadUrl=${BUKKIT_DOWNLOAD_URL}
;;
*)
match="Spigot"
downloadUrl=${SPIGOT_DOWNLOAD_URL}
;;
esac
downloadUrl=$(restify --class=jar-div https://mcadmin.net/ | \
jq --arg version "$match $VANILLA_VERSION" -r -f /usr/share/mcadmin.jq)
if [[ -n $downloadUrl ]]; then
echo "Downloading $match"
wget -q -O $SERVER "$downloadUrl"
status=$?
if [ $status != 0 ]; then
echo "ERROR: failed to download from $downloadUrl due to (error code was $status)"
exit 3
if [[ -z $downloadUrl ]]; then
downloadUrl=$(restify --class=jar-div https://mcadmin.net/ | \
jq --arg version "$match $VANILLA_VERSION" -r -f /usr/share/mcadmin.jq)
if [[ -z $downloadUrl ]]; then
echo "ERROR: Version $VANILLA_VERSION is not supported for $TYPE"
echo " Refer to https://mcadmin.net/ for supported versions"
exit 2
fi
else
echo "ERROR: Version $VANILLA_VERSION is not supported for $TYPE"
echo " Refer to https://mcadmin.net/ for supported versions"
exit 2
fi
echo "Downloading $match"
curl -kfsSL -o $SERVER "$downloadUrl"
status=$?
if [ ! -f $SERVER ]; then
echo "ERROR: failed to download from $downloadUrl (status=$status)"
exit 3
fi
}
function downloadPaper {
@@ -98,11 +104,11 @@ function downloadPaper {
esac
if [ $build != "nosupp" ]; then
downloadUrl="https://ci.destroystokyo.com/job/PaperSpigot/$build/artifact/paperclip.jar"
wget -q -O $SERVER "$downloadUrl"
status=$?
if [ $status != 0 ]; then
echo "ERROR: failed to download from $downloadUrl due to (error code was $status)"
rm $SERVER
downloadUrl=${PAPER_DOWNLOAD_URL:-https://ci.destroystokyo.com/job/PaperSpigot/$build/artifact/paperclip.jar}
curl -fsSL -o $SERVER "$downloadUrl"
if [ ! -f $SERVER ]; then
echo "ERROR: failed to download from $downloadUrl (status=$?)"
exit 3
fi
else
@@ -120,7 +126,7 @@ function installForge {
echo "Checking Forge version information."
case $FORGEVERSION in
RECOMMENDED)
curl -o /tmp/forge.json -sSL http://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json
curl -fsSL -o /tmp/forge.json http://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json
FORGE_VERSION=$(cat /tmp/forge.json | jq -r ".promos[\"$norm-recommended\"]")
if [ $FORGE_VERSION = null ]; then
FORGE_VERSION=$(cat /tmp/forge.json | jq -r ".promos[\"$norm-latest\"]")
@@ -138,7 +144,7 @@ function installForge {
esac
# URL format changed for 1.7.10 from 10.13.2.1300
sorted=$((echo $FORGE_VERSION; echo 10.13.2.1300) | sort -V | head -1)
sorted=$( (echo $FORGE_VERSION; echo 10.13.2.1300) | sort | head -1)
if [[ $norm == '1.7.10' && $sorted == '10.13.2.1300' ]]; then
# if $FORGEVERSION >= 10.13.2.1300
normForgeVersion="$norm-$FORGE_VERSION-$norm"
@@ -147,16 +153,99 @@ function installForge {
fi
FORGE_INSTALLER="forge-$normForgeVersion-installer.jar"
SERVER="forge-$normForgeVersion-universal.jar"
if [ ! -e "$SERVER" ]; then
echo "Downloading $FORGE_INSTALLER ..."
wget -q http://files.minecraftforge.net/maven/net/minecraftforge/forge/$normForgeVersion/$FORGE_INSTALLER
echo "Installing $SERVER"
java -jar $FORGE_INSTALLER --installServer
downloadUrl="http://files.minecraftforge.net/maven/net/minecraftforge/forge/$normForgeVersion/$FORGE_INSTALLER"
installMarker=".forge-installed-$normForgeVersion"
if [ ! -e $installMarker ]; then
if [ ! -e $FORGE_INSTALLER ]; then
echo "Downloading $FORGE_INSTALLER
from $downloadUrl ..."
curl -sSL -o $FORGE_INSTALLER $downloadUrl
echo "Installing Forge $normForgeVersion"
mkdir -p mods
tries=3
while ((--tries >= 0)); do
java -jar $FORGE_INSTALLER --installServer
if [ $? == 0 ]; then
break
fi
done
if (($tries < 0)); then
echo "Forge failed to install after several tries." >&2
exit 10
fi
SERVER=$(ls forge-$normForgeVersion-universal.jar* minecraftforge-universal-$normForgeVersion.jar*)
echo "Using server $SERVER"
echo $SERVER > $installMarker
fi
else
SERVER=$(cat $installMarker)
fi
}
function isURL {
local value=$1
if [[ ${value:0:8} == "https://" || ${value:0:7} = "http://" ]]; then
return 0
else
return 1
fi
}
function installFTB {
TYPE=FEED-THE-BEAST
echo "Looking for Feed-The-Beast server modpack."
if [[ -z $FTB_SERVER_MOD ]]; then
echo "Environment variable FTB_SERVER_MOD not set."
echo "Set FTB_SERVER_MOD to the file name of the FTB server modpack."
echo "(And place the modpack in the /data directory.)"
exit 2
fi
local srv_modpack=${FTB_SERVER_MOD}
if isURL ${srv_modpack}; then
case $srv_modpack in
*/download)
break;;
*)
srv_modpack=${srv_modpack}/download;;
esac
local file=$(basename $(dirname $srv_modpack))
local downloaded=/data/${file}.zip
echo "Downloading FTB modpack...
$srv_modpack -> $downloaded"
curl -sSL -o $downloaded $srv_modpack
srv_modpack=$downloaded
fi
if [[ ${srv_modpack:0:5} == "data/" ]]; then
# Prepend with "/"
srv_modpack=/${srv_modpack}
fi
if [[ ! ${srv_modpack:0:1} == "/" ]]; then
# If not an absolute path, assume file is in "/data"
srv_modpack=/data/${srv_modpack}
fi
if [[ ! -f ${srv_modpack} ]]; then
echo "FTB server modpack ${srv_modpack} not found."
exit 2
fi
if [[ ! ${srv_modpack: -4} == ".zip" ]]; then
echo "FTB server modpack ${srv_modpack} is not a zip archive."
echo "Please set FTB_SERVER_MOD to a file with a .zip extension."
exit 2
fi
echo "Unpacking FTB server modpack ${srv_modpack} ..."
mkdir -p ${FTB_DIR}
unzip -o ${srv_modpack} -d ${FTB_DIR}
cp -f /data/eula.txt ${FTB_DIR}/eula.txt
FTB_SERVER_START=${FTB_DIR}/ServerStart.sh
chmod a+x ${FTB_SERVER_START}
sed -i "s/-jar/-Dfml.queryResult=confirm -jar/" ${FTB_SERVER_START}
}
function installVanilla {
SERVER="minecraft_server.$VANILLA_VERSION.jar"
@@ -203,6 +292,11 @@ case "$TYPE" in
installForge
;;
FTB|ftb)
TYPE=FEED-THE-BEAST
installFTB
;;
VANILLA|vanilla)
installVanilla
;;
@@ -254,8 +348,8 @@ if [[ "$MODPACK" ]]; then
case "X$MODPACK" in
X[Hh][Tt][Tt][Pp]*[Zz][iI][pP])
echo "Downloading mod/plugin pack via HTTP"
echo "$MODPACK"
wget -q -O /tmp/modpack.zip "$MODPACK"
echo " from $MODPACK ..."
curl -sSL -o /tmp/modpack.zip "$MODPACK"
if [ "$TYPE" = "SPIGOT" ]; then
mkdir -p /data/plugins
unzip -o -d /data/plugins /tmp/modpack.zip
@@ -320,7 +414,7 @@ if [ ! -e server.properties ]; then
if [ -n "$LEVEL_TYPE" ]; then
# normalize to uppercase
LEVEL_TYPE=${LEVEL_TYPE^^}
LEVEL_TYPE=$( echo ${LEVEL_TYPE} | tr '[:lower:]' '[:upper:]' )
echo "Setting level type to $LEVEL_TYPE"
# check for valid values and only then set
case $LEVEL_TYPE in
@@ -359,7 +453,8 @@ if [ ! -e server.properties ]; then
if [ -n "$MODE" ]; then
echo "Setting mode"
case ${MODE,,?} in
MODE_LC=$( echo $MODE | tr '[:upper:]' '[:lower:]' )
case $MODE_LC in
0|1|2|3)
;;
su*)
@@ -380,7 +475,7 @@ if [ ! -e server.properties ]; then
;;
esac
sed -i "/gamemode\s*=/ c gamemode=$MODE" /data/server.properties
sed -i "/gamemode\s*=/ c gamemode=$MODE" $SERVER_PROPERTIES
fi
fi
@@ -417,12 +512,12 @@ if [ ! -e banned-ips.json ]; then
fi
# If any modules have been provided, copy them over
[ -d /data/mods ] || mkdir /data/mods
for m in /mods/*.jar
mkdir -p /data/mods
for m in /mods/*.{jar,zip}
do
if [ -f "$m" ]; then
if [ -f "$m" -a ! -f "/data/mods/$m" ]; then
echo Copying mod `basename "$m"`
cp -f "$m" /data/mods
cp "$m" /data/mods
fi
done
[ -d /data/config ] || mkdir /data/config
@@ -441,16 +536,34 @@ if [ "$TYPE" = "SPIGOT" ]; then
fi
fi
if [[ $CONSOLE = false ]]; then
EXTRA_ARGS=--noconsole
else
EXTRA_ARGS=""
EXTRA_ARGS=""
# Optional disable console
if [[ ${CONSOLE} = false || ${CONSOLE} = FALSE ]]; then
EXTRA_ARGS+="--noconsole"
fi
# If we have a bootstrap.txt file... feed that in to the server stdin
if [ -f /data/bootstrap.txt ];
then
exec java $JVM_OPTS -jar $SERVER "$@" $EXTRA_ARGS < /data/bootstrap.txt
else
exec java $JVM_OPTS -jar $SERVER "$@" $EXTRA_ARGS
# Optional disable GUI for headless servers
if [[ ${GUI} = false || ${GUI} = FALSE ]]; then
EXTRA_ARGS="${EXTRA_ARGS} nogui"
fi
# put these prior JVM_OPTS at the end to give any memory settings there higher precedence
echo "Setting initial memory to ${INIT_MEMORY:-${MEMORY}} and max to ${MAX_MEMORY:-${MEMORY}}"
JVM_OPTS="-Xms${INIT_MEMORY:-${MEMORY}} -Xmx${MAX_MEMORY:-${MEMORY}} ${JVM_OPTS}"
set -x
if [[ ${TYPE} == "FEED-THE-BEAST" ]]; then
cp -f $SERVER_PROPERTIES ${FTB_DIR}/server.properties
cp -f /data/{eula,ops,white-list}.txt ${FTB_DIR}/
cd ${FTB_DIR}
echo "Running FTB server modpack start ..."
exec sh ${FTB_SERVER_START}
else
# If we have a bootstrap.txt file... feed that in to the server stdin
if [ -f /data/bootstrap.txt ];
then
exec java $JVM_XX_OPTS $JVM_OPTS -jar $SERVER "$@" $EXTRA_ARGS < /data/bootstrap.txt
else
exec java $JVM_XX_OPTS $JVM_OPTS -jar $SERVER "$@" $EXTRA_ARGS
fi
fi

View File

@@ -1,13 +1,13 @@
#!/bin/sh
set -e
usermod --uid $UID minecraft
groupmod --gid $GID minecraft
sed -i "/^minecraft/s/:1000:1000:/:${UID}:${GID}:/g" /etc/passwd
sed -i "/^minecraft/s/:1000:/:${GID}:/g" /etc/group
if [ "$SKIP_OWNERSHIP_FIX" != "TRUE" ]; then
fix_ownership() {
dir=$1
if ! sudo -u minecraft test -w $dir; then
if ! su-exec minecraft test -w $dir; then
echo "Correcting writability of $dir ..."
chown -R minecraft:minecraft $dir
chmod -R u+w $dir
@@ -19,4 +19,4 @@ if [ "$SKIP_OWNERSHIP_FIX" != "TRUE" ]; then
fi
echo "Switching to user 'minecraft'"
exec sudo -E -u minecraft /start-minecraft "$@"
su-exec minecraft /start-minecraft $@

View File

@@ -1,6 +1,6 @@
FROM itzg/gvm
MAINTAINER itzg
LABEL maintainer "itzg"
RUN ["/run", "install", "springboot"]

View File

@@ -1,11 +1,12 @@
FROM itzg/ubuntu-openjdk-7
FROM openjdk:8-jre
MAINTAINER itzg
LABEL maintainer "itzg"
ENV TITAN_VERSION 0.5.4
RUN wget -q -O /tmp/titan.zip http://s3.thinkaurelius.com/downloads/titan/titan-$TITAN_VERSION-hadoop2.zip
RUN unzip -q /tmp/titan.zip -d /opt && rm /tmp/titan.zip
ADD http://s3.thinkaurelius.com/downloads/titan/titan-$TITAN_VERSION-hadoop2.zip /tmp/titan.zip
RUN unzip -q /tmp/titan.zip -d /opt && \
rm /tmp/titan.zip
ENV TITAN_HOME /opt/titan-$TITAN_VERSION-hadoop2
WORKDIR $TITAN_HOME

View File

@@ -1,6 +1,6 @@
FROM itzg/ubuntu-openjdk-7
MAINTAINER itzg
LABEL maintainer "itzg"
ENV APT_GET_UPDATE 2014-07-19

View File

@@ -1,6 +1,6 @@
FROM ubuntu:trusty
MAINTAINER itzg
LABEL maintainer "itzg"
ENV APT_GET_UPDATE 2015-10-29
RUN apt-get update