前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >安装podman 和服务构建

安装podman 和服务构建

原创
作者头像
时光_赌徒
修改2024-11-28 16:12:00
修改2024-11-28 16:12:00
5650
举报
文章被收录于专栏:记录记录

1、安装podman

  • 查看linux 发行版本
代码语言:bash
复制
lsb_release -a
  • CentOS 安装
代码语言:bash
复制
yum -y install podman
  • Debian 安装
代码语言:bash
复制
sudo apt install podman
  • 验证podman version2、配置国内镜像 全局配置 文件路径:
代码语言:bash
复制
/etc/containers/registries.conf

内容

代码语言:bash
复制
unqualified-search-registries = ["docker.io"]

# 自定义搜索器
[[registry]]
# 仓库前缀(镜像前缀)
prefix = "docker.io"
# 加速器地址,使用阿里自己的镜像源 替换xxxx 为阿里自己的
location = "xxxxxx.mirror.aliyuncs.com"
insecure = true


[[registry]]
location = "hub-mirror.c.163.com"
insecure = true

[[registry.mirror]]
# 百度镜像源
location = "mirror.baidubce.com"
insecure = true
[[registry.mirror]]
# 网易 163 镜像源
location = "hub-mirror.c.163.com"
insecure = true
[[registry.mirror]]
# 上海交大镜像源
location = "docker.mirrors.sjtug.sjtu.edu.cn"
insecure = true
[[registry.mirror]]
# 南京大学镜像源
location = "docker.nju.edu.cn"
insecure = true

3、安装podman-compose

  • 由于podman-compose 是用python3 写的需要python 环境 1、 Debian/Ubuntu
代码语言:bash
复制
sudo apt-get install python3-pip 

2、 RedHat/CentOS

代码语言:bash
复制
sudo yum install python3-pip
  • 安装
代码语言:bash
复制
pip3 install podman-compose

4、使用podman-compose 安装mysql

  • 编写 podman-compose.yml 文件 这里使用的是阿里云的镜像
代码语言:bash
复制
version: '3.4'
services:
  mysql:
    image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:8.0
    environment:
      LANG: C.UTF-8
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: mydatabase
      MYSQL_USER: admin
      MYSQL_PASSWORD: 123456
    ports:
      - "23306:3306"
    volumes:
      - './mysql:/var/lib/mysql'
      - "./mysql-conf:/etc/mysql/conf.d"
      - './data:/data'
    healthcheck:
      test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
      timeout: 20s
      retries: 10
  • 运行podman-compose 进行远程拉取进行并配置podman-compose up -d
  • 检查
代码语言:bash
复制
podman ps

5、使用podman-compose 打包springboot 服务并关联mysql

  • 目录层级(目录仅做演示)
代码语言:bash
复制
└─root
    ├─Dockerfile     
    ├─podman-compose.yml          
    └─app
	    │
		├─app.jar
        ├─entrypoint.sh
        └─deploy.sh 
  • Dockerfile 用于制作springboot镜像使用 内容如下
代码语言:bash
复制
#选择官方 OpenJDK 17 JDK 镜像作为基础镜像
FROM dragonwell-registry.cn-hangzhou.cr.aliyuncs.com/dragonwell/dragonwell:17-standard-ga-anolis
#定义一个卷挂载点,用于持久化或共享数据
VOLUME /opt/app
#设定时区环境变量,并在容器中设置相应的时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
#设置工作目录,后续的指令将在这个目录下执行
WORKDIR /opt/app
#将本地的entrypoint.sh脚本复制到容器的工作目录下
COPY ./app/entrypoint.sh /opt/app/entrypoint.sh
#给entrypoint.sh脚本添加执行权限
RUN chmod +x /opt/app/entrypoint.sh
#设置容器启动时执行的命令或脚本
ENTRYPOINT ["/opt/app/entrypoint.sh"]
  • app 文件夹下的entrypoint.sh
代码语言:bash
复制
#!/bin/bash
# entrypoint.sh
JAR_FILE="/opt/app/app.jar"

if [ ! -f "$JAR_FILE" ]; then
  echo "No APP-JAR file found in /opt/app"
  exit 1
fi

exec java -jar "$JAR_FILE"
  • 给entrypoint.sh 可执行权限
代码语言:bash
复制
chmod +x entrypoint.sh
  • 镜像打包 在/root目录下执行
代码语言:bash
复制
podman build -f Dockerfile -t springboot-app
  • podman-compose.yml 增加springboot 镜像并关联mysql
代码语言:bash
复制
version: '3.4'

services:
  springboot-service:
    container_name: app-server
    image: springboot-app
    environment:
      - _JAVA_OPTIONS=-Xmx1024m -Xms512m -XX:+UseZGC
      - SPRING_PROFILES_ACTIVE=test
      - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/mydatabase?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&createDatabaseIfNotExist=true&allowPublicKeyRetrieval=true
      - TZ=Asia/Shanghai
    volumes:
      - './logs:/opt/app/logs'
      - './app:/opt/app'
      - '/usr/share/zoneinfo/Asia/Shanghai:/etc/localtime'
    ports:
      - "8017:8092"
    depends_on:
    - mysql  # 注意:这不会等待 MySQL 完全就绪

  mysql:
    image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:8.0
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: mydatabase
      MYSQL_USER: admin
      MYSQL_PASSWORD: 123456
    ports:
      - "23306:3306"
    volumes:
      - './mysql:/var/lib/mysql'
      - "./mysql-conf:/etc/mysql/conf.d"
      - './data:/data'
    healthcheck:
      test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
      timeout: 20s
      retries: 10
  • 启动
代码语言:bash
复制
podman-compose up -d
  • 停止
代码语言:bash
复制
podman-compose down
  • app 文件夹下的deploy.sh 用于一键停止启动镜像
代码语言:bash
复制
#/bin/bash
cp app.jar "$(date +"%Y%m%d%H%M%S").jar";
mv app-0.0.1-SNAPSHOT.jar app.jar; 
podman-compose -f ../podman-compose.yml down;
echo "podman 容器停止完成!!!";
podman-compose -f ../podman-compose.yml up -d; 
echo "podman 容器启动!!!!";
podman logs -f app-server;
  • 可执行权限
代码语言:bash
复制
chmod +x deploy.sh
  • 注意:上述内容使用了宿主机和容器目录共享 app目录,所以以后只用将打包后的app.jar 放入app 目录下在执行 ./deploy.sh 即可启动容器加载最新的jar包

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、安装podman
  • 3、安装podman-compose
  • 4、使用podman-compose 安装mysql
  • 5、使用podman-compose 打包springboot 服务并关联mysql
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档