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.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 进行访问

 代码地址:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值