微服務+Docker---springboot+nginx+mysql
-
spring-boot 專案打包到 docker 映象中執行:
-
pom檔案
<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.13</version> <configuration> <imageName>springio/${project.artifactId}</imageName> <dockerDirectory>src/main/docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin>
-
Dockerfile 基於 jdk8 的 spring-boot 專案執行環境
FROM frolvlad/alpine-oraclejdk8:slim VOLUME /tmp ADD com.xxx-0.0.1-SNAPSHOT.jar app.jar RUN sh -c 'touch /app.jar' ENV JAVA_OPTS="" ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
-
打包命令:
mvn clean package -Dmaven.test.skip=true docker:build
或者單獨構建,把 jar 包和 dockerfile 放在同一個目錄下,執行docker build -t {springboot/xxx.jar:1.0.0} .
,注意後面的點不能少。 -
ubuntu docker 安裝 mysql
docker pull mysql
- 啟動 mysql 映象:
docker run -p 3306:3306 --name mysql -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/logs:/logs -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -d mysql
- mysql 遠端登陸:
mysql -h {ip} -p 3306 -u root -p {password}
- 授權遠端訪問並修改密碼:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'abc123456';
或者GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'abc123456' WITH GRANT OPTION;
-
ubuntu docker 安裝 nginx:
docker pull nginx
- 啟動 nginx:
docker run -d -v /root/Documents/nginx-assets:/usr/share/nginx/assets -v /etc/docker/nginx/conf.d:/etc/nginx/conf.d -p 80:80 --name webserver nginx
(-d 守護模式,-v 掛載資料卷,會同步本地資料夾到 docker 容器中,第二個 -v 是同步 nginx 配置檔案, --name 為本次容器啟動命名, nginx 為映象名稱,映象啟動後為 webserver)
-
docker 中執行 web 專案有兩種方式。
- 安裝 ubuntu 映象,在 ubuntu 上安裝 java 映象
- 直接安裝 java 映象
啟動 web 專案命令:docker run -d -v /root/Documents/data/xxx/:/data/xxx/ -p 8080:8080 registry.cn-hangzhou.aliyuncs.com/xxx/myblog:v1
如果沒有必要,儘量不用安裝系統映象,減少複雜度。
-
docker 常用命令:
- docker 啟動:Docker quickstart Terminal 直接啟動(會啟動 Oracle VM VirtualBox 然後啟動 docker 系統)
- 檢視所有映象:
docker images
- 檢視執行中的容器:
docker ps [-a]
- 停止某個容器:
docker stop {container_id}
- 刪除所有已停止的容器:
docker rm -f $(docker ps -a | grep Exit | awk '{ print $1 }')
- 刪除某個映象:
docker rmi {image-id}
- 檢視某個容器啟動日誌:
docker logs {container_id}
- 進入執行中的容器:
docker exec -it {container_id} bash
或docker attach {container_id}
- 基於 Dockerfile 構建映象:
docker build -t {springboot/xxx.jar:1.0.0} .
10.提交映象:docker commit {container_id} {name}; docker tag {container_id} {repository_path}; docker push {repository_path}:{版本}
- 檢視容器資訊:
docker inspect {container_id}
- 從容器中拷貝檔案到宿主機:
docker cp {container_id}:{container_path} {host_path}
- 停止執行 docker 的虛擬機器:
docker-machine stop default
加強理解:docker 本身就是一個精簡版的 linux 系統,所以能支援直接安裝各種映象,不需要再去安裝系統環境。另外 docker 提供了映象倉庫,很方便。
使用阿里雲映象地址加速:https://cr.console.aliyun.com/?spm=5176.1971733.0.2.9XaQr6#/accelerator
修改 docker 映象儲存位置:https://blog.csdn.net/u011248395/article/details/70994088
docker 命令參考:https://docker.rails365.net/chapters/3.html
相關文章
- 微服務2:微服務全景架構微服務架構
- 微服務03 微服務sentinel, springcloudgateway微服務SpringGCCloudGateway
- 微服務微服務
- 微服務1:微服務及其演進史微服務
- 微服務思考(01):什麼是微服務?微服務的優勢和劣勢微服務
- 微服務架構(一):什麼是微服務微服務架構
- 【微服務目錄】.NET Core 微服務介紹微服務
- 微服務思想微服務
- 理解微服務微服務
- .NET 微服務微服務
- go微服務Go微服務
- 微服務部署微服務
- go 微服務Go微服務
- 搭建微服務微服務
- 微服務架構:構建PHP微服務生態微服務架構PHP
- 微服務指南走北(一):微服務是什麼微服務
- 小白入門微服務(0) - 什麼是微服務微服務
- Java微服務 vs Go微服務,究竟誰更強!?Java微服務Go
- 微服務17:微服務治理之異常驅逐微服務
- 微服務思考(02):微服務實施前有哪些問題?微服務
- 微服務架構和設計模式 - DZone微服務微服務架構設計模式
- 微服務開發攻略之淺析微服務架構微服務架構
- 微服務那麼火,我也該用微服務嗎?微服務
- ABP微服務系列學習-使用Tye啟動微服務微服務
- SpringCloud(1) ——回顧微服務和微服務架構SpringGCCloud微服務架構
- go proto 微服務Go微服務
- 《關於微服務》微服務
- 微服務基礎微服務
- 微服務進階微服務
- 微服務導航微服務
- 初始微服務(一)微服務
- 微服務監控微服務
- 關於微服務微服務
- Docker與微服務Docker微服務
- silky微服務模組微服務
- Docker 微服務教程Docker微服務
- 微服務之整合微服務
- 微服務操作模型微服務模型