docker-compose实现微服务jar+mysql的容器服务发布(经典版)

news2024/11/27 22:30:09

一  安装mysql服务

1.1 拉取镜像

1.拉取: docker  pull  mysql:5.7.29

2.查看镜像: docker  images

1.2 在宿主机创建文件存储mysql

1.创建映射目录:mysql-c5  在/root/export/dockertest 目录下,mkdir  -p  mysql-c5  ;存储mysql信息

 1.3  创建容器

docker run -id --privileged=true \
-p 3306:3306 \
--name=c5_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7.29

1.4 进入容器

root@localhost dockertest]# docker exec -it c5_mysql /bin/bash
root@5d6f5def65ce:/#  mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.29 MySQL Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

1.5  远程连接

二  微服务工程上传并发布成镜像

2.1 微服务工程创建

配置连接:

 3.访问

2.2 将jar包上传服务器

上传前配置文件这里改成: ip改成容器中myql的服务名称,参考docker-compose中定义mysql的服务的名称。

 2.连接配置改成容器中mysql的名称

3.上传jar包

2.3 dockerfile文件的编写

注意dockerfile和jar包要放到同一个目录下,这里是在/root/export/dockertest/docker-compose-dir中

2.编写dockerfile的内容: vi  spt04-dockerfile  

     这里的dockerfile的名称为:spt04-dockerfile  ;内容如下:

#基础镜像使用java
#FROM java:8
FROM openjdk:8
#作者
MAINTAINER ljf
#volume 制定临时文件目录为/tmp,
VOLUME /tmp
#将jar包添加到容器中并更名为spt-docker。jar
ADD  04-spt-mybaitsplus-fenye-1.0-SNAPSHOT.jar 04-spt-fenye.jar
#运行jar包
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","04-spt-fenye.jar"]
#暴露端口8080作为微服务
EXPOSE 8084

2.4 通过dockefile生成镜像

1.注意结尾有一个点。说明 -f 为dockerfile的名称 spt04-dockerfile  ; 04-spt-fenye-master:1.6为镜像名称。

2.打成镜像:  docker build  -f spt04-dockerfile  -t 04-spt-fenye-master:1.6 .

3. 查看镜像

三  docker-compose 下载安装 

3.1 docker-compose的安装

1.、安装Docker Compose
# Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。 
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
2. 设置文件可执行权限 
chmod +x /usr/local/bin/docker-compose
3.查看版本信息 
docker-compose -version

4.卸载Docker Compose
 二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose

 四 创建docker网络

4.1 创建docker网络

创建网络,让容器之间可以进行互通访问。

1.查看网络   docker network  ls

2.创建网络 docker network create ljf_net

[root@localhost docker-compose-dir]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
fe668cbe4240        bridge              bridge              local
ead95c34bb4d        host                host                local
2452f37044ee        none                null                local
[root@localhost docker-compose-dir]# docker network create ljf_net
d9e1593ce665508aa690393a6976ce4165669cbee93c65645fc6056d8765b737
[root@localhost docker-compose-dir]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
fe668cbe4240        bridge              bridge              local
ead95c34bb4d        host                host                local
d9e1593ce665        ljf_net             bridge              local
2452f37044ee        none                null                local

2 截图

五 编写docker-compose文件

5.1 编写docker-compose文件

1.jar包,dockerfile,docker-compose 这3个文件,需要在同一级目录下。

 2.编写docker-compose的内容

1. - /app/microService:/data    不用自己创建,执行后会自动在宿主机和docker自动创建

2. privileged: true   防止容器中mysql没有操作目录的权限而设置

3.networks:
  ljf_net:  

 自己创建,目的让jar包能够访问到myql容器中的服务。

4.通过命令docker-compose config -q  可以判断所写文件格式是否有问题

version: '3'
services:
  microService:
    image: 04-spt-fenye-master:1.6
    container_name: spt01
    ports:
      - "8084:8084"
    volumes:
      - /app/microService:/data
    networks:
      - ljf_net
    depends_on:
      - mysql
  mysql:
    image: mysql:5.7.29
    environment:
      MYSQL_ROOT_PASSWORD: '123456'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      MYSQL_DATABASE: 'test-db'
      MYSQL_USER: 'root'
      MYSQL_PASSWORD: '123456'
    ports:
      - "3306:3306"
    volumes:
      - /app/mysql/db:/var/lib/mysql
      - /app/mysql/conf/my.cnf:/etc/my.cnf
      - /app/mysql/init:/docker-entrypoint-initdb.d
    privileged: true
    container_name: "mysql07"
    command: --default-authentication-plugin=mysql_native_password #解决外部无法访问
    networks:
      - ljf_net
networks:
  ljf_net:

5.2 执行docker-compose命令一键启动

1)执行前确保服务中docker的服务启动。

1.查看docker的服务: systemctl    status  docker

2.启动docker服务:systemctl start  docker

 2) 一键启动

[root@localhost docker-compose-dir]# docker-compose up -d
Creating mysql07 ... done
Creating spt01   ... done
[root@localhost docker-compose-dir]# docker ps -a
CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS                     PORTS                               NAMES
ac39b0f18163        04-spt-fenye-master:1.6   "java -Djava.secur..."   8 seconds ago       Up 6 seconds               0.0.0.0:8084->8084/tcp              spt01
e8710c0dfb42        mysql:5.7.29              "docker-entrypoint..."   8 seconds ago       Up 7 seconds               0.0.0.0:3306->3306/tcp, 33060/tcp   mysql07
5d6f5def65ce        mysql:5.7.29              "docker-entrypoint..."   20 hours ago        Exited (0) 3 hours ago                                         c5_mysql
14e0070ee163        spt-docker-master:1.6     "java -Djava.secur..."   24 hours ago        Exited (143) 3 hours ago                                       c11
b3ad03aefa87        xfce-tools-base           "run.sh"                 2 years ago         Exited (255) 2 years ago   0.0.0.0:5904->5901/tcp              jolly_hawking
341af5f795b4        xfce-tools-base           "run.sh"                 2 years ago         Exited (255) 2 years ago   0.0.0.0:5903->5901/tcp              sad_turing
a3857988c03d        xfce-tools-base           "run.sh"                 2 years ago         Exited (255) 2 years ago   0.0.0.0:5902->5901/tcp              elastic_hoover
bb9e19cbfd14        xfce-tools-base           "run.sh"                 2 years ago         Exited (255) 2 years ago   0.0.0.0:5901->5901/tcp              silly_kalam

5.3 查看容器log日志

[root@localhost docker-compose-dir]# docker ps -a
CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS                     PORTS                               NAMES
ac39b0f18163        04-spt-fenye-master:1.6   "java -Djava.secur..."   17 seconds ago      Up 15 seconds              0.0.0.0:8084->8084/tcp              spt01
e8710c0dfb42        mysql:5.7.29              "docker-entrypoint..."   17 seconds ago      Up 16 seconds              0.0.0.0:3306->3306/tcp, 33060/tcp   mysql07
5d6f5def65ce        mysql:5.7.29              "docker-entrypoint..."   20 hours ago        Exited (0) 3 hours ago                                         c5_mysql
14e0070ee163        spt-docker-master:1.6     "java -Djava.secur..."   24 hours ago        Exited (143) 3 hours ago                                       c11
b3ad03aefa87        xfce-tools-base           "run.sh"                 2 years ago         Exited (255) 2 years ago   0.0.0.0:5904->5901/tcp              jolly_hawking
341af5f795b4        xfce-tools-base           "run.sh"                 2 years ago         Exited (255) 2 years ago   0.0.0.0:5903->5901/tcp              sad_turing
a3857988c03d        xfce-tools-base           "run.sh"                 2 years ago         Exited (255) 2 years ago   0.0.0.0:5902->5901/tcp              elastic_hoover
bb9e19cbfd14        xfce-tools-base           "run.sh"                 2 years ago         Exited (255) 2 years ago   0.0.0.0:5901->5901/tcp              silly_kalam
[root@localhost docker-compose-dir]# docker logs spt01

5.4 登录初始化数据表数据

1.通过navicate连接后,新建表tb_user表和添加数据。

 2.通过命令进入容器查看

[root@localhost docker-compose-dir]# docker ps -a

CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS                       PORTS                               NAMES

7c18286e5e68        04-spt-fenye-master:1.6   "java -Djava.secur..."   2 minutes ago       Exited (1) 2 minutes ago                                         spt01

9c79cd96ec6e        mysql:5.7.29              "docker-entrypoint..."   2 minutes ago       Up 2 minutes                 0.0.0.0:3306->3306/tcp, 33060/tcp   mysql07

5d6f5def65ce        mysql:5.7.29              "docker-entrypoint..."   17 hours ago        Exited (0) 3 minutes ago                                         c5_mysql

14e0070ee163        spt-docker-master:1.6     "java -Djava.secur..."   21 hours ago        Exited (143) 3 minutes ago                                       c11

b3ad03aefa87        xfce-tools-base           "run.sh"                 2 years ago         Exited (255) 2 years ago     0.0.0.0:5904->5901/tcp              jolly_hawking

341af5f795b4        xfce-tools-base           "run.sh"                 2 years ago         Exited (255) 2 years ago     0.0.0.0:5903->5901/tcp              sad_turing

a3857988c03d        xfce-tools-base           "run.sh"                 2 years ago         Exited (255) 2 years ago     0.0.0.0:5902->5901/tcp              elastic_hoover

bb9e19cbfd14        xfce-tools-base           "run.sh"                 2 years ago         Exited (255) 2 years ago     0.0.0.0:5901->5901/tcp              silly_kalam

[root@localhost docker-compose-dir]# docker exec -it mysql07 /bin/bash

root@9c79cd96ec6e:/# mysql -uroot -p123456

mysql: [Warning] Using a password on the command line interface can be insecure.

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 13

Server version: 5.7.29 MySQL Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| sys                |

| test-db            |

+--------------------+

5 rows in set (0.01 sec)

mysql> use test-db;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> use test-db;

Database changed

mysql> show tables;

+-------------------+

| Tables_in_test-db |

+-------------------+

| tb_user           |

+-------------------+

1 row in set (0.00 sec)

mysql>

六 测试 访问

6.1 关闭防护墙

systemctl  status  firewalld

systemctl   stop  firewalld

6.2 进行访问

 代码地址:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/724030.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Django proxy_view代理后端

某些需求下,需要通过Django代理后端,比如开发celery定时任务时候,需要代理后端的flower,代理后端可以直接使用Django自带的授权,方便权限控制 具体操作如下 1.安装 django-proxy 包,进行代理 pip install …

LVS负载均衡集群(DR)

目录 1.数据包流向 2.通信遇到的问题 1.ARP广播 导致所有节点服务器和调度器的VIP响应 2.VIP的调度器失效 3.案例 1. 配置负载调度器 2.部署共享存储 3. 配置节点服务器(这里是两台) 1.数据包流向 1.客户端发送请求到负载均衡器 请求的数据报文到达内核空间 2.负载均…

改进 Elastic Stack 中的信息检索:引入 Elastic Learned Sparse Encoder,我们的新检索模型

作者:Thomas Veasey,Quentin Herreros 在本博客中,我们讨论了我们一直在使用预先训练的语言模型增强 Elastic 开箱即用检索功能所做的工作。 在本系列的上一篇博客文章中,我们讨论了在零样本设置中应用密集模型进行检索的一些挑战…

全网最细,接口自动化测试hook机制使用详细,进阶高级...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 requests 库只支持…

Sa-Token,一款更加轻量的权限认证框架

今天给大家介绍一个轻量级 Java 权限认证框架,我们之前一直采用最多的鉴权框架是OAuth2.0或者SpringSecurity,但是两者的配置都相当复杂,学习成本也非常高,所以我一直在试图寻找更好的解决办法,这几天在搭建权限体系平…

密码学学习笔记(五):Hash Functions - 哈希函数1

简介 什么是密码学中的哈希函数? 哈希函数是一种快速算法,它接受任何长度的输入,并产生一个固定长度的随机输出,称为摘要(digest),比如: MD4, MD5: 128-bit output (broken) •SHA-1: 160-bit output (b…

Infinite Zoom 丝滑循环小视频生成方法

使用Infinite Zoom插件在Stable Diffusion中可以制作无限缩放效果视频的过程。 文章目录 插件安装插件功能Main选项卡Video选项卡OutpaintPost process 插件使用 插件安装 在Stable-Diffusion-webui安装Infinite Zoom插件。启动Stable-Diffusion-webui,选择扩展-从…

使用css的:before属性在文字前加短竖线

有时候我们需要在文字或者标题前加个短竖线&#xff0c;有的人会使用 border 来模拟一个竖线&#xff0c;其实大可不必&#xff0c;我们可以利用元素的 :before 属性来实现&#xff0c;效果如下&#xff1a; 具体的代码如下&#xff0c; HTML&#xff1a; <span class&quo…

【计算机网络】第 1 课 - 数据的三种交换方式

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、缘起 2、电路交换 3、分组交换 4、三种交换方式的对比 4.1、电路交换优点 4.2、电路交换缺点 4.3、报文交换优点 4.4、…

【抽象拓扑排序】ABC216 D

D - Pair of Balls (atcoder.jp) 题意&#xff1a; 有2*n个球&#xff0c;每个球涂n种颜色&#xff0c;每种颜色恰好涂两个球&#xff0c;把这些球放进m个栈里&#xff0c;每次操作可以弹出两个相同颜色的球&#xff0c;问是否存在方案使得将所有栈清空 思路&#xff1a; 注…

Day44——动态规划part6

完全背包 private static void testCompletePack(){int[] weight {1, 3, 4};int[] value {15, 20, 30};int bagWeight 4;int[] dp new int[bagWeight 1];for (int i 0; i < weight.length; i){ // 遍历物品for (int j weight[i]; j < bagWeight; j){ // 遍历背包…

2023.07.06 homework

1&#xff09;止水夹打开&#xff0c;连通器相通 2&#xff09;左侧水位高11cm 的水位下降 y cm 3&#xff09;右侧水位低 4cm 的水位上涨 x cm 4&#xff09;最终两边水位相等保持一个平面上 11cm - y 4cm x 5&#xff09;左侧的水下降的体积跑哪里去了&#xff0c;填到…

flask和Vue3的前后端数据传输

&#xff08;一&#xff09;基于flask&#xff0c;构建一个后端 后端就采用flask的一般构建方法&#xff0c;然后用 flask-restful 构建一个接口&#xff0c;接口返回为json数据。 datas [{id: 1, name: xag, 年龄: 18}, {id: 2, name: xingag, age: 19}]class UserView(Res…

基于单片机的智能太阳能手机充电器的设计与实现

功能介绍 以STM32/51单片机作为主控系统&#xff1b;LCD1602液晶显示当前电压值&#xff1b;太阳能电池板采集当前光照转换为电能&#xff0c;然后TP4056锂电池充放电模块给锂电池进行充电&#xff0c;充完后自动断电&#xff0c;防过充&#xff1b;通过CE8301模块对锂电池电压…

3D空间的旋转的各种等价形式

旋转矩阵 欧拉轴和角度&#xff08;旋转矢量&#xff09; 欧拉旋转 四元数

如何部署LVS + keepalived 负载均衡高可用集群

目录 一、LVS架构 概念 L4和L7负载均衡的区别 keepalive故障自动切换 抢占与非抢占 二、keepalived管理LVS负载均衡器 LVS集中节点的健康检查 三、部署LVS keeplived 高可用集群 第一步 关闭防火墙和安全机制 第二步 安装工具 第三步 手动配置模块 第四步 编辑策略…

解决OpenJDK 64-Bit Server VM warning

解决OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 问题解决关闭Xshare关闭提示&#xff08;如果你使用的是IDEA的话&#xff09; 问题 在写spring boot项目调试的时候&#xff0c;发…

超級SEO助手,如何批量发布文章?

超級SEO助手,如何批量发布文章&#xff1f; 目前超级SEO助手产品已经正式上线&#xff0c;但是还是有很多同学不会自动化发布文章&#xff0c;所以今天我就详细讲解下整个流程。 在发布文章之前首先确认你已经接入了对应的接口渠道&#xff0c;比如Wordpress、DeDeCMS、Z-Blog、…

FlinkCDC第三部分-同步mysql到mysql,ctrl就完事~

本文介绍了不同源单表-单表同步&#xff0c;不同源多表-单表同步。 Flink版本&#xff1a;1.16 环境&#xff1a;Linux CentOS 7.0、jdk1.8 基础文件&#xff1a;flink-1.16.2-bin-scala_2.12.tgz、flink-connector-jdbc-3.0.0-1.16.jar、flink-sql-connector-mysql-cdc-2.3…

手机也能做3D建模人物,你知道吗?

3D建模人物是当今设计界越来越流行的一个领域。3D建模人物可以指的是使用3D技术来建立和表现各种类型的人物模型。无论是在游戏设计、电影特效还是虚拟现实等领域&#xff0c;3D建模人物都扮演着重要的角色。 与传统的手工绘图相比&#xff0c;现代设计师可以使用各种3D建模软…