FROM java:8 VOLUME /tmp ADD app.jar app.jar RUN bash -c 'touch /app.jar' EXPOSE 9001 ENV JAVA_OPTS="\ -server \ -Xmx4g \ -Xms4g \ -Xmn2g \ -XX:SurvivorRatio=8 \ -XX:MetaspaceSize=256m \ -XX:MaxMetaspaceSize=512m \ -XX:+UseParallelGC \ -XX:ParallelGCThreads=4 \ -XX:+UseParallelOldGC \ -XX:+UseAdaptiveSizePolicy \ -XX:+PrintGCDetails \ -XX:+PrintTenuringDistribution \ -XX:+PrintGCTimeStamps \ -XX:+HeapDumpOnOutOfMemoryError \ -XX:HeapDumpPath=/ \ -Xloggc:/gc.log \ -XX:+UseGCLogFileRotation \ -XX:NumberOfGCLogFiles=5 \ -XX:GCLogFileSize=10M" ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /app.jar
不過這種方式在dockerfile寫死了不靈活,不是很推薦,特別是要區分env的應用來講。java
docker run --rm -e JAVA_OPTS='-Xmx1g' tomcat
environment: - JVM_OPTS=-Xmx12g -Xms12g -XX:MaxPermSize=1024m
apiVersion: v1 kind: ReplicationController metadata: labels: app: jenkins role: master version: v1 name: jenkins-master namespace: jenkins spec: replicas: 1 selector: app: jenkins role: master version: v1 template: metadata: labels: app: jenkins role: master version: v1 spec: containers: - env: - name: JENKINS_OPTS value: --prefix= - name: JAVA_OPTS value: -Djava.awt.headless=true -Xmx200m -Dcom.sun.management.jmxremote= -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false image: jenkins:2.7.2 name: jenkins ports: - containerPort: 8080 name: web - containerPort: 50000 name: leader resources: limits: cpu: 1000m memory: 800Mi requests: cpu: 100m memory: 400Mi volumeMounts: - mountPath: /var/jenkins_home name: jenkins-master nodeSelector: worker: "true" volumes: - name: jenkins-master nfs: path: /data/jenkins-master server: '{{nfs_server}}'