项目的容器化部署
本地运行
本地运行很简单我们使用 java -jar
命令即可
容器化部署流程
- 为每个需要部署的项目配置 Dockerfile
- 将 Dockerfile 和打包好的 Jar 文件上传至打包服务器
- 基于 Dockerfile 将 Jar 文件打包进镜像
- 将打包的镜像上传至私服
- 在生产环境中拉取私服上最新的服务镜像
- 启动镜像容器
Dockerfile 配置案例
此处以项目 gaming-server-service-redis
为例,在项目根目录创建 docker/Dockerfile
文件
FROM openjdk:8-jre
MAINTAINER Lusifer <topsale@vip.qq.com>
ENV APP_VERSION 1.0.0-SNAPSHOT
ENV DOCKERIZE_VERSION v0.6.0
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
&& rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz
RUN mkdir /app
WORKDIR /app
COPY gaming-server-service-redis-$APP_VERSION.jar /app/app.jar
ENTRYPOINT ["dockerize", "-timeout", "5m", "-wait", "tcp://192.168.75.134:6379", "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar"]
EXPOSE 20883
注:dockerize
是一个小工具,可用于在启动容器之前等待其他需要先行启动的服务
构建 Docker 镜像
docker build -t 192.168.75.136:5000/gaming-server-service-redis:latest .
上传镜像到私服
docker push 192.168.75.136:5000/gaming-server-service-redis
拉取镜像并启动容器
version: '3.1'
services:
gaming-server-service-redis:
image: 192.168.75.136:5000/gaming-server-service-redis
restart: always
container_name: gaming-server-service-redis
ports:
- 20883:20883