目錄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
經過國內源下載
bash 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
文件
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
分支,而且本地構建能夠成功,而後再打包部署