引言
在本地使用 docker 部署 java 服务是一个常见的做法,可以帮助开发者在本地环境中快速搭建、测试和调试 java 应用程序。以下是详细的步骤指南,帮助你在本地计算机上使用 docker 部署 java 服务。
1. 安装 docker
1.1 windows
- 检查系统要求:确保你的 windows 版本是 windows 10 pro、enterprise 或 education(build 14393 或更高版本)。家庭版用户可能需要更新到 windows 10 pro。
- 启用 wsl 2:打开 powershell 以管理员身份运行以下命令:
wsl --install
- 下载 docker desktop:访问 docker 官方下载页面,下载适用于 windows 的 docker desktop 安装包。
- 安装 docker desktop:双击下载的安装包,按照提示完成安装。
- 启动 docker desktop:安装完成后,启动 docker desktop。首次启动时,可能需要几分钟时间来初始化。
1.2 macos
- 下载 docker desktop:访问 docker 官方下载页面,下载适用于 macos 的 docker desktop 安装包。
- 安装 docker desktop:双击下载的
.dmg 文件,按照提示完成安装。 - 启动 docker desktop:安装完成后,启动 docker desktop。首次启动时,可能需要几分钟时间来初始化。
1.3 linux
- 更新系统:
sudo apt-get update sudo apt-get upgrade
- 安装必要的包:
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
- 添加 docker 的官方 gpg 密钥:
curl -fssl https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- 设置稳定版存储库:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 安装 docker engine:
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io
- 启动 docker 服务:
sudo systemctl start docker sudo systemctl enable docker
2. 配置 docker
2.1 配置镜像加速
为了提高 docker 镜像的下载速度,可以配置国内的镜像加速器。编辑 /etc/docker/daemon.json 文件,添加如下内容:
{
"registry-mirrors": ["https://<your-id>.mirror.aliyuncs.com"]
}
然后重启 docker 服务:
sudo systemctl restart docker
3. 创建 java 应用
假设你已经有一个简单的 spring boot 应用程序,目录结构如下:
my-java-app/ ├── src │ ├── main │ │ ├── java │ │ │ └── com │ │ │ └── example │ │ │ └── myappapplication.java │ │ └── resources │ │ └── application.properties ├── pom.xml └── dockerfile
3.1 编写 dockerfile
在项目根目录下创建一个名为 dockerfile 的文件,内容如下:
# 使用官方的 openjdk 镜像作为基础镜像 from openjdk:11-jdk-slim as build # 设置工作目录 workdir /app # 将项目文件复制到容器中 copy . . # 构建 java 项目 run ./mvnw clean package # 使用构建阶段生成的 jar 文件创建一个新的镜像层 from openjdk:11-jre-slim # 设置工作目录 workdir /app # 将构建阶段生成的 jar 文件复制到新的镜像层中 copy --from=build /app/target/my-app.jar /app/my-app.jar # 暴露应用程序端口 expose 8080 # 启动应用程序 entrypoint ["java", "-jar", "/app/my-app.jar"]
4. 构建 docker 镜像
在项目根目录中运行以下命令来构建 docker 镜像:
docker build -t my-java-app .
5. 运行 docker 容器
使用以下命令来运行 docker 容器:
docker run -d -p 8080:8080 --name my-java-app-container my-java-app
其中 -d 表示后台运行,-p 8080:8080 表示将宿主机的 8080 端口映射到容器的 8080 端口,--name my-java-app-container 表示为容器指定一个名称。
6. 访问 java 应用
打开浏览器,访问 http://localhost:8080,你应该能看到你的 java 应用程序的响应。
7. 管理 docker 容器和镜像
7.1 列出所有运行的容器
docker ps
7.2 列出所有容器(包括停止的)
docker ps -a
7.3 停止容器
docker stop <container-id>
7.4 删除容器
docker rm <container-id>
7.5 列出所有镜像
docker images
7.6 删除镜像
docker rmi <image-id>
8. 高级配置
8.1 使用环境变量
通过环境变量可以灵活配置应用程序,避免硬编码。在 dockerfile 中定义环境变量:
env spring_profiles_active=prod
在运行容器时,可以通过 -e 参数传递环境变量:
docker run -d -p 8080:8080 -e spring_profiles_active=prod --name my-java-app-container my-java-app
8.2 数据持久化
使用 docker 卷(volume)可以实现数据的持久化,避免数据丢失。在 docker-compose.yml 中定义卷,并挂载到容器中:
version: '3.8'
services:
app:
build: .
ports:
- "8080:8080"
volumes:
- app-data:/app/data
volumes:
app-data:
9. 使用 docker compose 管理多容器应用
假设你的 java 应用程序依赖于 mysql 数据库,可以使用 docker compose 来管理多个服务。
9.1 创建 docker-compose.yml 文件
在项目根目录中创建一个名为 docker-compose.yml 的文件,内容如下:
version: '3.8'
services:
app:
build: .
ports:
- "8080:8080"
depends_on:
- db
environment:
spring_datasource_url: jdbc:mysql://db:3306/mydb
spring_datasource_username: user
spring_datasource_password: pass
db:
image: mysql:5.7
environment:
mysql_database: mydb
mysql_user: user
mysql_password: pass
ports:
- "3306:3306"
volumes:
- db-data:/var/lib/mysql
volumes:
db-data:
9.2 启动 docker compose
在包含 docker-compose.yml 文件的目录中运行以下命令来启动所有服务:
docker-compose up -d
其中 -d 表示后台运行。
10. 总结
通过以上步骤,你可以在本地计算机上成功安装和配置 docker,并使用 docker 来部署 java 服务。docker 的轻量级、可移植和高效的特点使得开发者可以在任何支持 docker 的环境中快速搭建和运行应用。希望这些步骤对你有所帮助,祝你在 docker 学习和实践中取得成功!
以上就是本地使用docker部署java服务的详细步骤的详细内容,更多关于docker部署java服务的资料请关注代码网其它相关文章!
发表评论