docker环境搭建
# 没有yum-config-manager命令的话
# yum -y install yum-utils
# 添加docker镜像地址
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装docker-ce , docker-cli (指定版本docker-ce-20.10.8 docker-ce-cli-20.10.8 containerd.io)
sudo yum -y install docker-ce docker-ce-cli containerd.io
# 启动docker
systemctl start docker
# 设置开机自启
systemctl enable docker
# 配置docker加速 (https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors)自行设置自己的
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ub3d38gx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
# 测试检测docker版本
[root@zhaoxingyu code]# docker -v
Docker version 20.10.8, build 3967b7d
设置拉取镜像
# 拉取最新版redis
docker pull redis
# 设置文件挂载目录的配置文件
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
# 设置数据redis数据持久化(开启AOF模式)
echo "appendonly yes" >> /mydata/redis/conf/redis.conf
# 设置redis认证密码(不设置也行)
echo "requirepass zhao123456" >> /mydata/redis/conf/redis.conf
# 启动redis (并设置redis.conf)
docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
--restart=always \
-d redis redis-server /etc/redis/redis.conf
编写代码
创建普通spring boot项目 引入 web 和 redis 依赖
编写controller
配置文件修改
server.port=6500
# redis 密码
spring.redis.password=zhao123456
# redis地址
spring.redis.host=101.132.248.90
启动项目测试index接口没有问题
打包构建启动
编写简单Dockerfile
FROM openjdk:8u302-jdk-slim # 设置在容器中的其他引用
LABEL maintainer=zhaoxingyu
COPY target/*.jar /app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
使用mvn package打包工具
target文件夹和Docker文件拷贝到服务器中
在当前目录执行
# 构建Dockerfile文件
docker build -t java-demo:1.0 .
# 如果Dockerfile文件不在这个目录或者不是叫Dockerfile 可以通过-f /mydata/code/Dockerfile 指定位置
等待构建完成
[root@zhaoxingyu code]# docker build -t java-demo:1.0 .
Sending build context to Docker daemon 27.29MB
Step 1/4 : FROM openjdk:8u302-jdk-slim
8u302-jdk-slim: Pulling from library/openjdk
bd897bb914af: Pull complete
0cc7fec72146: Pull complete
4bdb783f109f: Pull complete
4cee21827af0: Pull complete
Digest: sha256:a954575c94c08ce01f273f1c69f93d1f213fce46381d8eba05f062db478bdbcd
Status: Downloaded newer image for openjdk:8u302-jdk-slim
---> 99b31c7569d0
Step 2/4 : LABEL maintainer=zhaoxingyu
---> Running in ed198fde1700
Removing intermediate container ed198fde1700
---> 36b967d986e0
Step 3/4 : COPY target/*.jar /app.jar
---> b9510edd5cfd
Step 4/4 : ENTRYPOINT ["java","-jar","/app.jar"]
---> Running in 3d4b50258779
Removing intermediate container 3d4b50258779
---> 3d2793ed75e4
Successfully built 3d2793ed75e4
Successfully tagged java-demo:1.0
启动镜像测试
docker run -d -p 6500:6500 java-demo:1.0
如果是云服务器设置安全组 暴露6500端口 (这里暴露的是6000-7000之间的端口,因为还要暴露redis端口)
推送到docker hub
-
注册dockerhub
-
创建dockerhub的仓库
-
服务器登录dockerhub
# 登录输入用户名密码 docker login # (退出:docker logout)
-
设置本地镜像标签
docker tag java-demo:1.0 zhaoxingyudocker/java-demo:1.0
-
推送镜像
docker push zhaoxingyudocker/java-demo:1.0
-
等待推送完成
[root@zhaoxingyu code]# docker push zhaoxingyudocker/java-demo:1.0 The push refers to repository [docker.io/zhaoxingyudocker/java-demo] b21b45a4739d: Pushed 3b147e0af2a7: Mounted from library/openjdk 86b49f790727: Mounted from library/openjdk f7e816b93eb6: Mounted from library/openjdk a548c9107c3a: Mounted from library/openjdk 1.0: digest: sha256:e067d07df0f6da693df9702970ea4c69ec5f27f8af3a3517ce3b3e0a136ff729 size: 1372
-
推送完成
-
搜索自己的镜像
[root@zhaoxingyu code]# docker search zhaoxingyudocker NAME DESCRIPTION STARS OFFICIAL AUTOMATED zhaoxingyudocker/java-demo 这里是描述哦 0
其他人拉取运行
# 拉取
docker pull zhaoxingyudocker/java-demo:1.0
# 运行
docker run -d -p 6500:6500 java-demo:1.0