使用 Docker 部署
- 准备 Java 应用
确保你的 Java 应用已经打包成可执行的 JAR 文件。例如,使用 Maven 或 Gradle 进行打包:
Maven:在项目根目录下执行
mvn clean package
命令。 Gradle:执行gradle build
命令。 - 创建 Dockerfile 在项目根目录下创建一个名为 Dockerfile 的文件,内容如下: Dockerfile
使用官方的 Java 基础镜像
FROM openjdk:11-jre-slim
# 设置工作目录
WORKDIR /app
# 将打包好的 JAR 文件复制到容器中
COPY target/your-application.jar app.jar
# 暴露应用运行的端口
EXPOSE 8080
# 定义容器启动时执行的命令
CMD ["java", "-jar", "app.jar"]
请将 your-application.jar 替换为你实际生成的 JAR 文件名称,8080 替换为你的 Java 应用实际监听的端口。
-
构建 Docker 镜像 在包含 Dockerfile 的目录下,打开终端并执行以下命令来构建 Docker 镜像:
docker build -t your-image-name:tag .
your-image-name 是你给镜像指定的名称,例如 my-java-app。 tag 是镜像的标签,例如 1.0。 . 表示使用当前目录作为构建上下文。
-
保存和传输 Docker 镜像 构建完成后,你可以将镜像保存为一个压缩文件,然后传输到目标服务器:
docker save -o your-image-name.tar your-image-name:tag
将生成的 your-image-name.tar 文件传输到目标服务器。
-
在目标服务器上加载和运行镜像 在目标服务器上,使用以下命令加载镜像:
docker load -i your-image-name.tar
然后运行容器:
docker run -d -p 8080:8080 your-image-name:tag
-d
表示在后台运行容器。
-p 8080:8080
表示将宿主机的 8080 端口映射到容器的 8080 端口。
使用 Docker Compose 部署
- 创建 docker-compose.yml 文件
在项目根目录下创建一个名为 docker-compose.yml 的文件,内容如下:
version: '3' services: java-app: image: your-image-name:tag ports: - "8080:8080" restart: always
请将 your-image-name:tag 替换为你实际构建的 Docker 镜像名称和标签。
- 在目标服务器上部署
将 docker-compose.yml 文件和之前保存的
your-image-name.tar
文件传输到目标服务器。在目标服务器上加载镜像:
然后使用 Docker Compose 启动容器:docker load -i your-image-name.tar
-d 选项表示在后台运行容器。 通过以上步骤,你可以将 Java 应用以容器的形式部署到别人的服务器上,同时避免暴露源码。docker-compose up -d