[TOC]html
Docker已经上市不少年,不是什么新鲜事物了,不少企业或者开发同窗之前也很少很多有所接触,可是有实操经验的人很少,本系列教程主要偏重实战,尽可能讲干货,会根据本人理解去作阐述,具体官方概念能够查阅官方教程,由于本系列教程对前一章节有必定依赖,建议先学习前面章节内容。java
本系列教程导航: Docker深刻浅出系列 | 容器初体验 Docker深刻浅出系列 | Image实战演练 Docker深刻浅出系列 | 单节点多容器网络通讯 Docker深刻浅出系列 | 容器数据持久化 Docker深刻浅出系列 | 单机Nginx+Springboot实战mysql
教程目的:nginx
1.下载mysqlgit
docker pull mysql
2.下载nginxgithub
docker pull nginx
3.克隆credit-facility-service
做为后面部署演示使用,使用docker
分支web
git clone https://github.com/EvanLeung08/credit-facility-service.git
4.虚拟机、centos和docker环境安装请查看第一章,本章默认已经安装好centos和docker Docker深刻浅出系列 | 容器初体验spring
Docker Compose是一个用于定义和运行多容器应用程序的工具。 经过compose,咱们可使用yaml文件来配置应用程序的服务,而后使用一个命令来建立和启动全部已配置的服务。 在微服务环境中进行本地开发测试时,咱们常用此工具。 它也是轻量级的,只须要简单的配置。 您能够预先配置所需的环境和服务,而后专一于当前开发的服务,而没必要管理开发时如何运行每一个服务的方式。 sql
首先,咱们回顾前一章,咱们要部署一个微服务项目,须要手动配置一堆命令,十分繁琐,假若有几十上百个容器,而且容器之间还存在依赖,光是忙着搭建容器都耗掉一天了,还谈什么Devops,那有没有什么方便快捷的组建,可让咱们经过一个配置就搞定容器编排和运行呢?docker
Docker compose就是为了简化多容器配置和管理工做而生的,能够简化大量重复的手动工做,具备如下主要特色:
docker-compse up
能够按照依赖关系启动全部服务docker-compose down
中止全部服务--scale
进行扩容Docker Compose的考虑理由:
docker-compose up
,而后使用docker-compose down
轻松将其拆解。 这使咱们的开发人员能够将开发环境保持在一个中立位置,并帮助咱们轻松地部署应用程序。单主机部署: 传统上,Compose专一于开发和测试,但如今可用于在单个主机系统上进行部署和管理容器的整个部署过程。
开发环境: Compose提供了在孤立的环境中运行应用程序的能力,该环境能够在安装了Docker的任何计算机上运行。 这使测试你的应用程序变得很是容易,并提供了一种尽量接近生产环境的工做方式。 Compose文件管理应用程序的全部依赖项(数据库,队列,缓存等),而且可使用单个命令建立每一个容器。
自动化测试环境: 持续集成和整个开发过程的重要组成部分是自动化测试套件,该套件要求能够在其中执行测试的环境。 Compose提供了一种方便的方法来建立和销毁与您的生产环境接近的隔离测试环境。
能够参考官网:Docker Compose安装
1.下载当前稳定版本,选择对应系统版本,我这里用的是Centos
经过官方下载
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
经过国内源下载
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
2.赋予可执行权限
sudo chmod +x /usr/local/bin/docker-compose
经过Compose,咱们开发人员能够经过应用在docker-compose.yml文件中声明的许多规则轻松地一次处理多个Docker容器。
它由多个层级组成,这些层级使用制表符或空格分隔,而不是大多数编程语言中已知的括号。 几乎每一个Compose-File应该具备如下四个主要方面:
Version
Services
Volumes
network
docker-compose.yml 示例:
version: '3.3' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volumes: db_data: {}
以上文件包含整个Wordpress应用程序,包括MySQL数据库。 这些服务中的每个都被视为一个单独的容器,能够在须要时进行添加或删除
我是怎么知道这些命令怎么使用? 详细的配置参数,能够查阅: 官方配置参数
查看docker-compose的基本操做命令,能够经过docker-compose --help
进行查看,不少命令实际上是跟docker类似
[root@localhost credit-facility]# docker-compose --help Define and run multi-container applications with Docker. Usage: docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...] docker-compose -h|--help Options: -f, --file FILE Specify an alternate compose file (default: docker-compose.yml) -p, --project-name NAME Specify an alternate project name (default: directory name) --verbose Show more output --log-level LEVEL Set log level (DEBUG, INFO, WARNING, ERROR, CRITICAL) --no-ansi Do not print ANSI control characters -v, --version Print version and exit -H, --host HOST Daemon socket to connect to --tls Use TLS; implied by --tlsverify --tlscacert CA_PATH Trust certs signed only by this CA --tlscert CLIENT_CERT_PATH Path to TLS certificate file --tlskey TLS_KEY_PATH Path to TLS key file --tlsverify Use TLS and verify the remote --skip-hostname-check Don't check the daemon's hostname against the name specified in the client certificate --project-directory PATH Specify an alternate working directory (default: the path of the Compose file) --compatibility If set, Compose will attempt to convert keys in v3 files to their non-Swarm equivalent --env-file PATH Specify an alternate environment file Commands: build Build or rebuild services bundle Generate a Docker bundle from the Compose file config Validate and view the Compose file create Create services down Stop and remove containers, networks, images, and volumes events Receive real time events from containers exec Execute a command in a running container help Get help on a command images List images kill Kill containers logs View output from containers pause Pause services port Print the public port for a port binding ps List containers pull Pull service images push Push service images restart Restart services rm Remove stopped containers run Run a one-off command scale Set number of containers for a service start Start services stop Stop services top Display the running processes unpause Unpause services up Create and start containers version Show the Docker-Compose version information
相信你们都已经看过上一章,若是你们尚未看过,请先回到上一章节教程。
在上一章,咱们经过手动方式,一步步搭建了Nginx、Mysql以及额度服务,相信你们都体会到整个流程很是繁琐,有一部出错了,都要从新敲一遍指令,在本章咱们沿用上一章的环境配置,可是整个过程会经过docker compose来帮咱们自动部署而不是手动部署。
168.18.0.0/24
credit-facility-volume
,用于持久化Mysql容器数据1.若是上一章已经建立好了容器,先清理上一章已经建立的容器,避免冲突
docker container stop credit-facility01 docker container stop credit-facility02 docker container stop credit-facility03 docker container stop credit-facility-db docker container stop credit-facility-nginx docker container rm credit-facility01 docker container rm credit-facility02 docker container rm credit-facility03 docker container rm credit-facility-db docker container rm credit-facility-nginx
2.清理上一章建立好的网络credit-facility-net
docker network rm credit-facility-net
3.核对下当前Centos系统上credit-facility
目录下的文件是否跟我一致,若是不同,请先查看上一章
[root@localhost credit-facility]# ls Dockerfile nginx start-1.0.0-SNAPSHOT.jar
咱们上一章建立好的文件应该是以上三个
1.上传credit-facility-service
项目里的docker-compose.yml
文件到Centos系统credit-facility
目录下,若是还没克隆额度服务到本地,请查看前期准备
docker-compose.yml
文件存放在credit-facility-service
项目dockerfile
目录下
[root@localhost credit-facility]# ls Dockerfile docker-compose.yml nginx start-1.0.0-SNAPSHOT.jar
这时候会多了一个docker-compose.yml
文件
PS: 若是在前面章节没有建立额度服务镜像,这里须要先建立credit-facility-image
镜像:
[root@localhost credit-facility]# docker build -t credit-facility-image .
2.经过docker config
校验compose文件,若是文件格式有问题,经过该命令能够帮你校验并输出错误信息
[root@localhost credit-facility]# docker-compose config networks: credit-facility-net: driver: bridge ipam: config: - subnet: 168.18.0.0/24 services: credit-facility-service1: build: context: /usr/local/credit-facility container_name: credit-facility01 image: credit-facility-image networks: credit-facility-net: ipv4_address: 168.18.0.10 ports: - 8081:8080/tcp restart: always credit-facility-service2: build: context: /usr/local/credit-facility container_name: credit-facility02 image: credit-facility-image networks: credit-facility-net: ipv4_address: 168.18.0.11 ports: - 8082:8080/tcp restart: always credit-facility-service3: build: context: /usr/local/credit-facility container_name: credit-facility03 image: credit-facility-image networks: credit-facility-net: ipv4_address: 168.18.0.12 ports: - 8083:8080/tcp restart: always mysql: build: context: /usr/local/credit-facility container_name: credit-facility-db environment: MYSQL_DATABASE: db_credit_facility MYSQL_ROOT_PASSWORD: evan123 image: mysql networks: credit-facility-net: ipv4_address: 168.18.0.4 ports: - 3301:3306/tcp restart: always volumes: - credit-facility-volume:/var/lib/mysql:rw nginx: build: context: /usr/local/credit-facility container_name: credit-facility-nginx image: nginx networks: credit-facility-net: ipv4_address: 168.18.0.5 ports: - 80:80/tcp restart: always volumes: - /usr/local/credit-facility/nginx/nginx.conf:/etc/nginx/nginx.conf:rw version: '3.0' volumes: credit-facility-volume: {}
这里能够看到,咱们的配置文件检验经过,接下来咱们分段拆解来讲明下每一段脚本的意思
配置网络
networks: credit-facility-net: driver: bridge ipam: config: - subnet: 168.18.0.0/24
跟前面同样,这里建立了一个自定义网络credit-facility-net
,指定了docker的网络模式是bridge
,划分了一个子网ip段168.18.0.0/24
,跟前一章手动配置对应的命令以下:
[root@localhost ~]# docker network create --subnet=168.18.0.0/24 credit-facility-net
配置Mysql容器
mysql: restart: always container_name: credit-facility-db image: mysql ports: - "3301:3306" volumes: - "credit-facility-volume:/var/lib/mysql:rw" environment: - MYSQL_DATABASE=db_credit_facility - MYSQL_ROOT_PASSWORD=evan123 networks: credit-facility-net: ipv4_address: 168.18.0.4
credit-facility-db
mysql
,若是指定的image不存在,它会自动从远程仓库下载credit-facility-volume
,而且分配读写权限db_credit_facility
,数据库root用户密码为evan123
credit-facility-net
,分配静态IP 168.18.0.4
上面的compose文件配置对应前一章的手动配置命令以下:
[root@localhost ~]# docker run -d --name credit-facility-db -v credit-facility-volume:/var/lib/mysql -p 3301:3306 -e MYSQL_ROOT_PASSWORD=evan123 --net=credit-facility-net --ip 168.18.0.4 mysql
配置额度服务集群
credit-facility-service1: restart: always container_name: credit-facility01 depends_on: - mysql image: credit-facility-image build: . ports: - "8081:8080" networks: credit-facility-net: ipv4_address: 168.18.0.10 credit-facility-service2: restart: always container_name: credit-facility02 depends_on: - mysql image: credit-facility-image build: . ports: - "8082:8080" networks: credit-facility-net: ipv4_address: 168.18.0.11 credit-facility-service3: restart: always container_name: credit-facility03 depends_on: - mysql image: credit-facility-image build: . ports: - "8083:8080" networks: credit-facility-net: ipv4_address: 168.18.0.12
核心配置:
credit-facility01
、credit-facility02
和credit-facility03
docker-compose
启动时会按照依赖关系来启动credit-facility-net
,并对三个实例分别分配了静态ip168.18.0.10
、168.18.0.11
和168.18.0.12
大部分命令跟前面同样,因此这里不做重复讲解。这里对应前一章的手动配置命令以下:
[root@localhost credit-facility]# docker build -t credit-facility-image . [root@localhost credit-facility]# docker run -d --name credit-facility01 -p 8081:8080 --net=credit-facility-net --ip 168.18.0.10 credit-facility-image [root@localhost credit-facility]# docker run -d --name credit-facility02 -p 8082:8080 --net=credit-facility-net --ip 168.18.0.11 credit-facility-image [root@localhost credit-facility]# docker run -d --name credit-facility03 -p 8083:8080 --net=credit-facility-net --ip 168.18.0.12 credit-facility-image
这里沿用上一章在credit-facility
目录下建立的dockerfile:
FROM openjdk:8-jre-alpine MAINTAINER evan LABEL name="credit-facility" version="1.0" author="evan" COPY start-1.0.0-SNAPSHOT.jar credit-facility-service.jar CMD ["java","-jar","credit-facility-service.jar"]
配置Nginx服务
nginx: restart: always container_name: credit-facility-nginx depends_on: - mysql - credit-facility-service1 - credit-facility-service2 - credit-facility-service3 image: nginx ports: - "80:80" volumes: - /usr/local/credit-facility/nginx/nginx.conf:/etc/nginx/nginx.conf networks: credit-facility-net: ipv4_address: 168.18.0.5
核心配置:
credit-facility-nginx
/etc/nginx/nginx.conf
文件映射到宿主机/usr/local/credit-facility/nginx/nginx.conf
,这里的nginx配置沿用上一章的配置不变,宿主机的配置会自动覆盖容器的nginx.conf文件168.18.0.5
大部分命令跟前面同样,因此这里不做重复讲解。这里对应前一章的手动配置命令以下:
[root@localhost nginx]# docker run -d --name credit-facility-nginx -p 80:80 -v /usr/local/credit-facility/nginx/nginx.conf:/etc/nginx/ningx.conf --network=credit-facility-net --ip 168.18.0.5 nginx
这里沿用上一章的Nginx配置/usr/local/credit-facility/nginx/nginx.conf
:
user nginx; worker_processes 1; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; location / { proxy_pass http://balance; } } upstream balance{ server credit-facility01:8080; server credit-facility02:8080 ; server credit-facility03:8080; } include /etc/nginx/conf.d/*.conf; }
这里是经过容器名称访问,所以不须要管每一个容器的ip是多少
4.经过docker-compose up
启动全部服务
[root@localhost credit-facility]# docker-compose up Creating network "credit-facility_credit-facility-net" with driver "bridge" Creating credit-facility02 ... done Creating credit-facility-db ... done Creating credit-facility03 ... done Creating credit-facility-nginx ... done Creating credit-facility01 ... done ...
经过docker-compose
命令,会按照咱们在docker-compose.yml配置的信息去建立和启动服务,而且把日志打印到控制台输出,这里由于日志太多,只截取了部分日志,只要日志没有报错信息,全部服务到这里已经搭建完成
1.验证Nginx服务是否已经成功,这里须要经过宿主机ip+映射端口访问
先查看下当前centos机器的ip
[root@localhost credit-facility]# ip add ... 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:ba:0a:28 brd ff:ff:ff:ff:ff:ff inet 192.168.101.23/24 brd 192.168.101.255 scope global noprefixroute dynamic eth1 valid_lft 68553sec preferred_lft 68553sec inet6 fe80::a00:27ff:feba:a28/64 scope link valid_lft forever preferred_lft forever
从上面能够看到,宿主机外网ip是192.168.101.23
在本机浏览器输入192.168.101.23
进行验证 Nginx服务已经启动成功
2.验证额度服务是否成功访问
经过Nginx 80端口验证
分别经过每一个实例自身映射端口访问
3.验证额度服务接口是否能够处理成功
在验证额度服务前,须要先把表建立好,把credit-facility-service
下的db script在DB里执行 进入到Mysql容器,把表建立sql放进去执行
[root@localhost credit-facility]# docker exec -it credit-facility-db bash root@d0d2fb8006c9:/# mysql -uroot -pevan123 mysql> show databases; +--------------------+ | Database | +--------------------+ | db_credit_facility | | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.01 sec) mysql> use db_credit_facility; Database changed mysql> CREATE TABLE `t_product_limit` ...
输入下面请求数据测试接口
{ "registrationLimitCO": { "applicationId": "1111", "userId": 1111, "quotaLimit": 10000, "productCode": "tb", "expirationTime": "2030-01-01", "accountType": 1 } }
从上面输出结果能够看到,接口已经处理成功
4.进去数据库查看是否已经保存数据成功
mysql> select * from t_product_limit; +--------------------+---------------------+---------------------+---------+---------+--------------------+--------------------+-------------+---------+--------------+-------------+---------------+-----------------+--------------+------------+--------------+------------+---------------+-------------+---------------+---------------------+---------------+---------------+-----------+-----------+ | id | create_time | edit_time | deleted | version | serial_number | account_id | customer_id | user_id | product_code | quota_limit | quota_balance | quota_occupancy | quota_frozen | quota_base | quota_change | quota_mode | frozen_status | frozen_time | expire_status | expiration_time | active_status | inactive_time | parent_id | abandoned | +--------------------+---------------------+---------------------+---------+---------+--------------------+--------------------+-------------+---------+--------------+-------------+---------------+-----------------+--------------+------------+--------------+------------+---------------+-------------+---------------+---------------------+---------------+---------------+-----------+-----------+ | 684437432334159872 | 2020-03-03 08:30:00 | 2020-03-03 08:30:00 | 0 | 0 | 684437432338354177 | 684437432338354176 | 111111 | 1111 | tb | 10000 | 0 | 0 | 0 | 0 | 0 | NULL | 1 | NULL | NULL | 2030-01-01 00:00:00 | NULL | NULL | NULL | 0 | +--------------------+---------------------+---------------------+---------+---------+--------------------+--------------------+-------------+---------+--------------+-------------+---------------+-----------------+--------------+------------+--------------+------------+---------------+-------------+---------------+---------------------+---------------+---------------+-----------+-----------+ 1 row in set (0.00 sec)
在互联网公司比较场景,常常会遇到服务器资源不足,特别是遇到节假日公司要搞活动,须要临时扩容增大服务的计算能力,假如咱们公司已经用上docker,docker-compose
就能够帮咱们很简单作到服务器扩容,固然,docker-compose
不多直接在生产上独立使用,更可能是在开发测试环境,后面讲解k8s的时候会介绍生产上如何作到弹性扩容。 接下来,咱们只须要经过简单的命令就能够实现弹性扩容
1.对于前面咱们建立的docker-compose.yml作一点改动,加入一个新的服务定义,以下
web: restart: always image: credit-facility-image build: . expose: - "8080" depends_on: - mysql - credit-facility-service1 - credit-facility-service2 - credit-facility-service3 networks: - credit-facility-net
这里指定了容器端口是8080,可是没有配置宿主机端口映射,网络也加入到credit-facility-net
Nginx也须要调整下,把静态ip去掉,而且加上依赖,避免ip冲突,docker会自动分配一个静态ip
nginx: restart: always container_name: credit-facility-nginx depends_on: - mysql - credit-facility-service1 - credit-facility-service2 - credit-facility-service3 - web image: nginx ports: - "80:80" links: - web volumes: - /usr/local/credit-facility/nginx/nginx.conf:/etc/nginx/nginx.conf networks: - credit-facility-net
在这里我复制了一份credit-facility-service
配置,为了方便演示,我去掉了网络配置和端口映射,由于若是想使用弹性扩容,端口和ip不能固定,不然会启动失败,改造后完整的配置以下:
version: '3' services: mysql: restart: always container_name: credit-facility-db image: mysql ports: - "3301:3306" volumes: - "credit-facility-volume:/var/lib/mysql:rw" environment: - MYSQL_DATABASE=db_credit_facility - MYSQL_ROOT_PASSWORD=evan123 networks: credit-facility-net: ipv4_address: 168.18.0.4 credit-facility-service1: restart: always container_name: credit-facility01 depends_on: - mysql image: credit-facility-image build: . ports: - "8081:8080" networks: credit-facility-net: ipv4_address: 168.18.0.10 credit-facility-service2: restart: always container_name: credit-facility02 depends_on: - mysql image: credit-facility-image build: . ports: - "8082:8080" networks: credit-facility-net: ipv4_address: 168.18.0.11 credit-facility-service3: restart: always container_name: credit-facility03 depends_on: - mysql image: credit-facility-image build: . ports: - "8083:8080" networks: credit-facility-net: ipv4_address: 168.18.0.12 web: restart: always image: credit-facility-image build: . expose: - "8080" depends_on: - mysql - credit-facility-service1 - credit-facility-service2 - credit-facility-service3 networks: - credit-facility-net nginx: restart: always container_name: credit-facility-nginx depends_on: - mysql - credit-facility-service1 - credit-facility-service2 - credit-facility-service3 - web image: nginx ports: - "80:80" links: - web volumes: - /usr/local/credit-facility/nginx/nginx.conf:/etc/nginx/nginx.conf networks: - credit-facility-net networks: credit-facility-net: driver: bridge ipam: config: - subnet: 168.18.0.0/24 volumes: credit-facility-volume: {}
2.执行如下命令,对web服务进行弹性扩容,建立三个容器实例
[root@localhost credit-facility]# docker-compose up --scale web=3 -d Creating network "credit-facility_credit-facility-net" with driver "bridge" Creating network "credit-facility_default" with the default driver Creating credit-facility_web_1 ... done Creating credit-facility_web_2 ... done Creating credit-facility_web_3 ... done Creating credit-facility01 ... done Creating credit-facility02 ... done Creating credit-facility03 ... done Creating credit-facility-nginx ... done Creating credit-facility-db ... done
从上图能够看到,web服务对应的容器实例已经建立成功,它的命名方式是基于dockerfile里面的Label名称+_web_<实例序号>
。
3.经过docker-compose ps
查看下当前已启动的容器
[root@localhost credit-facility]# docker-compose ps Name Command State Ports -------------------------------------------------------------------------------------------------- credit-facility-db docker-entrypoint.sh mysqld Up 0.0.0.0:3301->3306/tcp, 33060/tcp credit-facility-nginx nginx -g daemon off; Up 0.0.0.0:80->80/tcp credit-facility01 java -jar credit-facility- ... Up 0.0.0.0:8081->8080/tcp credit-facility02 java -jar credit-facility- ... Up 0.0.0.0:8082->8080/tcp credit-facility03 java -jar credit-facility- ... Up 0.0.0.0:8083->8080/tcp credit-facility_web_1 java -jar credit-facility- ... Up 8080/tcp credit-facility_web_2 java -jar credit-facility- ... Up 8080/tcp credit-facility_web_3 java -jar credit-facility- ... Up 8080/tcp
这里能够看到,咱们配置的全部容器都启动成功,而且新增了三个web容器实例
4.经过docker-compose logs web
能够查看web服务每一个实例的日志
5.修改下nginx.conf的配置,改成新的web容器名称,注释掉咱们原来的credit-facility容器
user nginx; worker_processes 1; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; location / { proxy_pass http://balance; } } upstream balance{ # server credit-facility01:8080; # server credit-facility02:8080 ; # server credit-facility03:8080; server credit-facility_web_1:8080; server credit-facility_web_2:8080; server credit-facility_web_3:8080; } include /etc/nginx/conf.d/*.conf; }
6.重启nginx服务
[root@localhost nginx]# docker restart credit-facility-nginx credit-facility-nginx
7.经过Postman测试WEB服务
请求Url输入你宿主机ip,请求方式是POST
,在请求body输入如下请求数据:
{ "registrationLimitCO": { "applicationId": "1111", "userId": 1111, "quotaLimit": 10000, "productCode": "tb", "expirationTime": "2030-01-01", "accountType": 1 } }
从上面相应结果能够看到,服务处理成功
Docker Compose官方文档:官方文档 Demo项目地址:Demo下载
1.docker-compose up
启动报错
[root@localhost credit-facility]# docker-compose up ERROR: Named volume "credit-facility-volume:/var/lib/mysql:rw" is used in service "mysql" but no declaration was found in the volumes section.
解决方案: 这是由于缺乏Volume声明,在docker-compose.yml
按以下配置(上文的配置文件已经配置好)
- "credit-facility-volume:/var/lib/mysql:rw" volumes: credit-facility-volume: {}
2.credit-facility-service
在服务器上启动报错 先肯定你是否已经切换到docker
分支,而且本地构建能够成功,而后再打包部署
有兴趣的朋友,欢迎加我公众号一块儿交流,有问题能够留言,平时工做比较忙,我也抽时间尽可能回复每位朋友的留言,谢谢!
原文出处:https://www.cnblogs.com/evan-liang/p/12405745.html