在内网服务器部署自带 Java 环境 Docker 镜像的完整教程

在内网服务器部署自带 Java 环境 Docker 镜像的完整教程

引言

在开发和部署 Java 应用时,经常遇到内网服务器不通外网,无法安装 Java、MySQL、Redis 和 Nginx 等环境的问题。为了解决这一痛点,我设计了一个基于 Docker 的方案:在有外网的服务器上打包一个自含环境的镜像,传输到内网服务器运行。这样,整个环境都在容器内运行,无需在内网服务器再安装任何东西,数据持久化、端口映射、配置自定义都支持。

这个教程以 x86_64 架构服务器为例(外网服务器 192.168.0.157,内网服务器 192.168.0.129),从构建镜像到部署 Java 服务和静态网站,全过程详解。整个过程经历了架构兼容、网络超时、权限初始化等坑,最终成功上线生产环境。如果你也遇到类似需求,这个教程可以帮你节省大量时间。

前提条件

  • 外网服务器有 Docker 和互联网访问。

  • 内网服务器有 Docker,但不通外网。

  • 两台服务器能通过 scp 或 U 盘传输文件。

  • Ubuntu 22.04 操作系统(其他类似)。

步骤1:在外网服务器(192.168.0.157)构建镜像

  1. 准备 Dockerfile

在外网服务器创建目录并编写 Dockerfile:


mkdir ~/java/docker

cd ~/java/docker

nano Dockerfile

粘贴以下内容(Ubuntu 22.04 基础镜像,自带 OpenJDK 17、MySQL 8、Redis 最新、Nginx):


# 基础镜像:Ubuntu 22.04

FROM registry.cn-hangzhou.aliyuncs.com/library/ubuntu:22.04

# 避免交互式安装提示

ENV DEBIAN_FRONTEND=noninteractive

# 安装基础工具

RUN apt-get update && apt-get install -y \

wget \

curl \

gnupg \

software-properties-common \

ca-certificates \

&& rm -rf /var/lib/apt/lists/*

# 安装 OpenJDK 17(如果你需要其他版本,可改为 11 或 21)

RUN apt-get update && apt-get install -y openjdk-17-jdk \

&& java -version \

&& rm -rf /var/lib/apt/lists/*

# 安装 MySQL 8

RUN apt-get update && apt-get install -y mysql-server \

&& mysql --version \

&& rm -rf /var/lib/apt/lists/*

# 安装最新版 Redis(使用 Redis 官方 PPA)

RUN curl -fsSL https://packages.redis.io/gpg | gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg \

&& echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/redis.list \

&& apt-get update \

&& apt-get install -y redis \

&& redis-server --version \

&& rm -rf /var/lib/apt/lists/*

# 安装 Nginx

RUN apt-get update && apt-get install -y nginx \

&& nginx -v \

&& rm -rf /var/lib/apt/lists/*

# 暴露常用端口(根据需要调整)

EXPOSE 80 3306 6379

# 默认启动一个交互式 shell,方便手动启动服务

CMD ["/bin/bash"]

  1. 配置 Docker 镜像加速器(国内网络必备)

编辑 /etc/docker/daemon.json:


sudo nan
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值