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

一  安装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.6container_name: spt01ports:- "8084:8084"volumes:- /app/microService:/datanetworks:- ljf_netdepends_on:- mysqlmysql:image: mysql:5.7.29environment: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.dprivileged: truecontainer_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.hqwc.cn/news/15057.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch介绍和安装

ELK简介 Elastic Stack核心产品包括Elasticsearch、Logstash、Kibana(也称为ELK)和Beats等等。能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化 Kibana是一个免费且开放的用户界面,能…

LVS +Keepalived高可用群集

文章目录 一、Keepalived概述二、Keepalived服务重要功能1.管理 LVS 负载均衡软件2.支持故障自动切换(Failover)3.实现 LVS 集群中节点的健康检查(Health Checking)4.VRRP通信原理 三、keepalived体系主要模块及作用四、keepalive…

LogicFlow 在HTML中的引入与使用

LogicFlow 在HTML中的引入与使用 LogicFlow的引入与使用,相较于BPMNJS相对容易一些,更加灵活一些,但是扩展代码可能写得更多一些。 示例展示 示例代码 github: https://github.com/iotzzh/origin-examples/blob/main/%E6%B5%81%E7%A8%8B%E5%9…

ADB 命令结合 monkey 的简单使用,超详细

一:ADB简介 1,什么是adb: ADB 全称为 Android Debug Bridge,起到调试桥的作用,是一个客户端-服务器端程序。其中客户端是用来操作的电脑,服务端是 Android 设备。ADB 也是 Android SDK 中的一个工具&#…

C++中的继承/虚继承原理

C中的继承 文章目录 C中的继承1.继承的概念和定义1.1 继承定义1.12 继承关系和访问限定符2.基类和派生类对象的复制转换3.继承中的作用域4.派生类的默认成员函数继承与友元 6.**继承与静态成员****复杂的菱形继承及菱形虚拟继承**7.虚继承解决数据冗余和二义性的原理 1.继承的概…

亚马逊云科技Zero ETL数据库,助力企业走向数据驱动的业务增长之路

据Forrester研究,相对于数据应用不够成熟的公司,那些有效获取业务洞察的公司,有高达8.5倍的可能性实现至少20%的收入增长。然而,要实现这一增长,需要简化一项流程——在数据分析前管理和准备好数据。这就是为什么亚马逊…

Java动态规划LeetCode1137. 第 N 个泰波那契数

方法1:通过动态规划解题,这道题也是动态规划的一道很好的入门题,因为比较简单和容易理解。 代码如下: public int tribonacci(int n) {//处理特殊情况if(n0){return 0;}if(n1||n2){return 1;}//定义数组int[]dpnew int[n1];//初…

随机数检测(三)

随机数检测(三)- 块内最大游程检测、二元推导检测、自相关检测、矩阵秩检测 3.8 块内最大游程检测方法3.9 二元推导检测方法3.10 自相关检测3.11 矩阵秩检测 如果商用密码产品认证中遇到问题,欢迎加微信symmrz或13720098215沟通。 3.8 块内最…

uniapp - [全端兼容] 多选弹框选择器,弹框形式的列表多选选择器组件插件(底部弹框式列表多选功能,支持数据回显、动态数据、主题色等配置)

前言 网上的教程都太乱了,各种不兼容且 BUG 太多,注释也没有很难进行改造。 本文 实现了 uniapp 全端兼容的弹框多选选择器,从底部弹出列表项进行多选(可回显已选中和各种主题色、样式配置), 您可以直接复制代码,稍微改改样式就能用了。 如下图所示,数据列表(支持接口…

23 | MySQL是怎么保证数据不丢的?

以下内容出自《MySQL 实战 45 讲》 23 | MySQL是怎么保证数据不丢的? binlog 的写入机制 1、事务执行过程中,先把日志写到 binlog cache,事务提交的时候,再把 binlog cache 写到 binlog 文件中。 2、一个事务的 binlog 是不能被…

C++的范围for语句详解 附易错实例

💯 博客内容:C读取一行内个数不定的整数的方式 😀 作  者:陈大大陈 🚀 个人简介:一个正在努力学技术的准前端,专注基础和实战分享 ,欢迎私信! 💖 欢迎大家&…

Linux开发工具【gcc/g++】

Linux开发工具之【gcc/g】 上文我们已经学习了vim编辑器的相关操作和使用,已经可以在Linux下编写代码了,有了代码就需要编译运行,此时就需要用到Linux中的编译工具gcc/g了,其中gcc是C语言的编译器,g是C的编译器&#…