1、镜像带有jdk工具
# 使用 OpenJDK 8 的 Alpine 版本作为基础镜像
FROM openjdk:8-jdk-alpine
# 设置环境变量
ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk
ENV PATH $JAVA_HOME/bin:$PATH
# 设置时区为东八区 (Asia/Shanghai)
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ENV LANG=zh_CN.UTF-8 LANGUAGE=zh_CN:zh LC_ALL=zh_CN.UTF-8
# 安装必要的工具(jstack 和 jmap 默认包含在 JDK 中)
RUN apk add --no-cache bash
2、镜像不带有jdk工具
# 使用 openjdk:8-jre-slim 作为基础镜像
FROM openjdk:8-jre-slim
# 设置环境变量
ENV JAVA_TOOL_OPTS="-XX:+IgnoreUnrecognizedVMOptions \
-XX:+UseContainerSupport \
-XX:+IdleTuningCompactOnIdle \
-XX:+IdleTuningGcOnIdle \
-XX:+UseG1GC \
-Xms500m \
-XX:NewRatio=3 \
-XX:MaxGCPauseMillis=300 \
-XX:G1HeapRegionSize=32m \
-XX:+UseStringDeduplication \
-Xloggc:/var/log/gc.log \
-XX:NumberOfGCLogFiles=10 \
-XX:GCLogFileSize=20M
-XX:+HeapDumpOnOutOfMemoryError \
-XX:HeapDumpPath=/var/dump \
-XX:+ExitOnOutOfMemoryError"
# 设置环境变量
ENV JAVA_HOME=/usr/local/openjdk-8
ENV PATH $JAVA_HOME/bin:$PATH
# 设置时区为东八区 (Asia/Shanghai)
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt-get update && apt-get install -y libfreetype6 libfontconfig1
MAINTAINER gentlelions@163.com
3、示例代码
以dockeer-compose.yml配置为例:
services:
rabbitmq:
image: rabbitmq:3.11-management
container_name: rabbitmq
ports:
- "5672:5672" # RabbitMQ 默认端口
- "15672:15672" # RabbitMQ 管理界面
volumes:
- ./rabbitmq/data:/var/lib/rabbitmq:rw # 持久化数据
- ./rabbitmq/config/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf # 挂载配置文件
- ./rabbitmq/log:/var/log/rabbitmq:rw # 挂载日志文件
environment:
RABBITMQ_DEFAULT_USER: rabbitmq # 默认用户名
RABBITMQ_DEFAULT_PASS: rabbitmq # 默认密码
RABBITMQ_CONFIG_FILE: /etc/rabbitmq/rabbitmq.conf
privileged: true
restart: always
networks:
itx:
ipv4_address: 172.20.10.130
system:
image: registry.cn-qingdao.aliyuncs.com/test/system:20240826-001
container_name: system
environment:
- JAVA_OPTS= -Dspring.profiles.active=test -Dlogging.level.root=INFO
ports:
- 19201:9201
privileged: true
restart: always
volumes:
- /var/logs:/var/system/logs/:rw # 容器自身日志
- /var/logs/system:/var/log/ # gc.log日志
- /var/logs/system/dump:/var/dump # oom的dump文件
logging:
driver: "json-file"
options:
max-size: "20m"
max-file: "5"
networks:
itx:
ipv4_address: 172.20.10.137
networks:
itx:
driver: bridge
ipam:
config:
- subnet: 172.20.10.128/25