# 常用的 Docker 镜像脚本和命令 ## 安装 DPanel ```shell docker run \ -d \ -p 端口号:8080 \ -e APP_NAME=dpanel \ --name dpanel \ --restart=always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v 替换成DPanel的存储目录:/dpanel \ registry.cn-hangzhou.aliyuncs.com/dpanel/dpanel:lite ``` ## 基于毫秒镜像源构建 Maven、OpenJDK21、git 的 Dockerfile 镜像命名为:mvn-java-21 ```shell FROM docker.1ms.run/eclipse-temurin:21-jdk ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone RUN sed -i s@http://archive.ubuntu.com/@http://mirrors.tuna.tsinghua.edu.cn/@g /etc/apt/sources.list && \ sed -i s@http://security.ubuntu.com/@http://mirrors.tuna.tsinghua.edu.cn/@g /etc/apt/sources.list && \ apt-get update && \ apt-get install -y git maven && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* ``` ## 基于毫秒镜像源构建 Maven、OpenJDK8、git 的 Dockerfile 镜像命名为:mvn-java-8 ```shell FROM docker.1ms.run/maven:3.8.6-jdk-8 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 阿里云镜像源 RUN echo "deb https://mirrors.aliyun.com/debian/ bullseye main contrib non-free" > /etc/apt/sources.list && \ echo "deb https://mirrors.aliyun.com/debian-security/ bullseye-security main contrib non-free" >> /etc/apt/sources.list && \ echo "deb https://mirrors.aliyun.com/debian/ bullseye-updates main contrib non-free" >> /etc/apt/sources.list && \ apt-get update && \ apt-get install -y git && \ rm -rf /var/lib/apt/lists/* ``` ## 基于毫秒镜像源构建 node:16、git、nginx 的 Dockerfile 镜像命名为:node-16 ```shell FROM docker.1ms.run/node:16-alpine # 阿里云镜像源 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories RUN apk add --no-cache git nginx ``` ## 示例:构建一个 SpringBoot、Java21 的 Dockerfile ``` FROM docker.1ms.run/library/mvn-java-21:latest ENV PROJECT_ACTIVE=根据实际情况激活 application-xxx.yaml 配置文件,比如:prod WORKDIR /app EXPOSE springboot 内嵌的 servlet 容器端口号 # 配置容器启动命令 RUN << 'EOF' cat > /entrypoint.sh #!/bin/bash set -e cd /app && rm -rf 源码目录 git clone "http://用户名:密码@远程仓库地址.git" cd /app/源码目录 && mvn clean package exec java -jar target/jar包名称.jar --spring.profiles.active=$PROJECT_ACTIVE EOF RUN chmod +x /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"] ``` ## 示例:构建一个 SpringBoot、Java8 的 Dockerfile ``` FROM docker.1ms.run/library/mvn-java-8:latest ENV PROJECT_ACTIVE=根据实际情况激活 application-xxx.yaml 配置文件,比如:prod WORKDIR /app EXPOSE springboot 内嵌的 servlet 容器端口号 # 配置容器启动命令 RUN << 'EOF' cat > /entrypoint.sh #!/bin/bash set -e cd /app && rm -rf 源码目录 git clone "http://用户名:密码@远程仓库地址.git" cd /app/源码目录 && mvn clean package exec java -jar target/jar包名称.jar --spring.profiles.active=$PROJECT_ACTIVE EOF RUN chmod +x /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"] ``` ## 示例:构建一个 Node16、Vue2 的 Dockerfile ``` FROM docker.1ms.run/library/node-16:latest WORKDIR /web EXPOSE Nginx的端口号 # 配置 nginx.conf RUN << 'EOF' cat > /nginx.conf 在这里补全Nginx配置文件内容 EOF # 配置容器启动命令 RUN << 'EOF' cat > /entrypoint.sh #!/bin/bash set -e 继续补全。。。 EOF RUN chmod +x /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"] ``` ## 安装 Grafana ```shell docker run \ -d \ --name grafana-12.1.1 \ -p 宿主机端口号:3000 \ -v 替换成数据存储目录:/var/lib/grafana \ -v 替换成日志存储目录:/var/log/grafana \ -v 替换成插件存储目录:/var/lib/grafana/plugins \ swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/grafana/grafana-oss:12.1.1 ``` ## 安装 Mysql 8.4.5 参数按需调整 ``` docker run -d \ --name mysql-8.4.5 \ -e MYSQL_ROOT_PASSWORD='设置root登录密码' \ -p 宿主机端口号:3306 \ -v 替换成mysql存储目录:/var/lib/mysql \ --memory="2g" \ --memory-swap="-1" \ --restart=on-failure:3 \ swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:8.4.5 \ --max_connections=100 \ --tmp_table_size=67108864 \ --max_heap_table_size=67108864 \ --innodb_buffer_pool_size=536870912 \ --innodb_log_file_size=134217728 \ --thread_cache_size=16 \ --slow_query_log=1 \ --log_output='TABLE' \ --long_query_time=5 \ --bind-address=0.0.0.0 \ --skip-name-resolve ``` ## 安装 Redis 6.2.6 参数按需调整 ``` docker run -d \ --name redis-6.2.6 \ --memory="512m" \ --memory-swap="-1" \ --restart=on-failure:3 \ -p 宿主机端口号:6379 \ -v 替换成redis持久化存储目录:/data \ -e REDIS_PORT=6379 \ -e REDIS_REQUIREPASS='登录密码' \ docker.1ms.run/redis:6.2.6 \ redis-server --bind 0.0.0.0 \ --requirepass 'Ketao@789!' \ --appendonly no \ --save "" \ --dir /data \ --daemonize no \ --maxmemory 500mb \ --maxmemory-policy allkeys-lru ```