ubuntu系统下安装docker并部署Springboot+mysql+redis
目錄
- 安裝Docker
- Docker常用命令
- 構建mysql容器
- 構建Redis容器
- 構建Springboot應用鏡像及容器
- (1)springboot使用maven將程序打成jar包,接著編寫Dokerfile文件,[Dockerfile詳細介紹](http://www.dockerinfo.net/dockerfile%e4%bb%8b%e7%bb%8d)
- (2)將打好的jar包與Dockerfile放到linux下同個目錄下
- (3)運行命令制作鏡像:
- (4)根據Springboot配置文件中mysql的配置運行容器:
- (5)查看springboot運行日志及狀態
- 部署過程的異常
- docker運行spring boot 包鏡像出現no main manifest attribute問題
- 解決方案
- 參考
安裝Docker
最簡單的方法:使用國內 daocloud 一鍵安裝命令
curl -sSL https://get.daocloud.io/docker | sh驗證是否安裝成功:
docker version若出現版本信息則說明成功安裝了
Docker常用命令
此部分轉載自:博主「一路向北0」
1.重啟docker服務
systemctl restart docker
2.停止docker命令
systemctl stop docker
3.查看鏡像列表
docker images
4.刪除鏡像
docker rmi image-id
5.查看容器列表
docker ps
查看所有容器,包括停止的容器
docker ps -a
6.啟動以及停止容器
docker start container-name/container-id
docker stop container-name/container-id
7.刪除容器
docker rm container-id
強制刪除容器
docker rm -f container-id
8.查看容器日志
docker logs container-name/container-id
查看實時日志
docker logs -f container-name/container-id
9.設置 阿里云 加速地址
找到 /etc/docker/ 目錄下
vim daemon.json
將以下內容復制到文件中
{
“registry-mirrors”: [“https://rypl6yvv.mirror.aliyuncs.com”]
}
systemctl daemon-reload 通知systemd重載此配置文件
systemctl restart docker 重啟docker
10.查看最后一次運行的容器
docker ps -l
11.查看停止的容器
docker ps -f status=exited
12.【外部】復制文件到【容器】中去:
docker cp /外部目錄/外部文件 容器名:/容器目錄/文件名【若最后寫了文件名,就以最后的文件名為主】
13.【容器】復制文件到【外部】:
docker cp 容器名:/容器目錄/容器中的文件 /外部目錄/文件名【若最后寫了文件名,就以最后的文件名為主】
14.(目錄掛載)文件映射:
docker run -di --name=mynginx -p 90:80 -v /usr/html:/usr/share/nginx/html nginx:1.17.5
-v 目錄掛載 外部目錄:容器目錄
-p 端口映射 外部端口:容器端口
15.查看容器所有信息:
docker inspect container-name
構建mysql容器
此處構建的是mysql:8.0.18的鏡像,構建mysql5.x的鏡像可以參考:在docker中運行mysql實例
docker pull mysql:8.0.18
參數說明:
- –name: 指定容器的名稱
- -p: 指定本機與容器的映射端口,以此訪問容器端口
- -e: 初始化root用戶的密碼
- -v: 掛載數據。容器里面的數據不能直接訪問的,但可通過-v指定本機的目錄掛載到容器中實現訪問容器的數據
- –restar=always:自動重啟,比如服務器突然斷電,重啟服務器之后不需要你重新手動啟動
- -d:以后臺的方式運行,即守護線程(Daemon)
查看mysql容器是否運行:
docker ps
進入mysql容器:
docker exec -it mysql bash
在容器內登陸Mysql:
mysql -uroot -p123456
查看用戶信息
select host,user,plugin,authentication_string from mysql.user;
host為 % 表示不限制ip,localhost表示本機使用。 plugin如果不是mysql_native_password 則需要修改
exit
構建Redis容器
與構建mysql容器類似
docker pull redis:latest
docker run -itd --name redis -p 6379:6379 redis
docker exec -it redis-test /bin/bash
redis-cli
構建Springboot應用鏡像及容器
(1)springboot使用maven將程序打成jar包,接著編寫Dokerfile文件,Dockerfile詳細介紹
Dockerfile示例:
FROM java:8 # 作者 MAINTAINER Darren <754121262@qq.com>VOLUME /tmp # 將jar包添加到容器的/目錄下并更名為user-server.jar ADD user-server-1.0-SNAPSHOT.jar /user-server.jarEXPOSE 9000 # 運行jar包 RUN bash -c 'touch /user-server.jar' ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dfile.encoding=utf-8","-jar","/user-server.jar"](2)將打好的jar包與Dockerfile放到linux下同個目錄下
(3)運行命令制作鏡像:
docker build -t [容器名] .注意:最后面一個點表示當前目錄
(4)根據Springboot配置文件中mysql的配置運行容器:
當springboot項目連接數據的配置文件為:
spring.datasource.url = jdbc:mysql://localhost:3306/spring運行命令:
docker run --net=host --name=springboot -p 9000:9000 -di springboot:1.0–net=host 告訴 Docker 不要將容器網絡放到隔離的名字空間中,即不要容器化容器內的網絡。此時容器使用本地主機的網絡,它擁有完全的本地主機接口訪問權限。容器進程可以跟主機其 它 root 進程一樣可以打開低范圍的端口,可以訪問本地網絡服務比如 D-bus,還可以讓容器做一些影響整個主機系統的事情,比如重啟主機。因此使用這個選項的時候要非常小心。如果進一步的使用 --privileged=true,容器會被允許直接配置主機的網絡堆棧。
當springboot項目連接數據的配置文件為:
spring.datasource.url = jdbc:mysql://mysql:3306/spring 即:有數據庫別名的時候 # --link 連接提供mysql服務的容器,冒號后面是配置文件中數據庫的別名,別名應該和代碼中的數據庫地址一致 docker run --link mydata:mysql --name=springboot-p 9000:9000 -di springboot:1.0# --link 鏈接,mydata為已經在運行的數據庫鏡像的別名,冒號后面是配置文件中數據庫的別名,這里配置文件中數據庫的別名為mysql # --name 為容器的別名 # -p 為端口號映射 80 為外部訪問端口,8090為容器對宿主機的映射端口 # -d后臺運行容器 # -i以交互模式運行容器 # 鏡像名:版本號(5)查看springboot運行日志及狀態
docker ps docker logs -f [容器名]部署過程的異常
docker運行spring boot 包鏡像出現no main manifest attribute問題
運行命令docker logs 【容器ID】,查看運行日志
no main manifest attribute即springboot程序沒有入口類
解決方案
項目基于maven pom多模塊的開發的,需要設置goal-repackage屬性為true,否則打包后文件依賴文件沒有一起打包,然后鏡像內沒有可以運行的程序文件
<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><!-- 指定該Main Class為全局的唯一入口 --><mainClass>com.zcj.email.EmailApplication</mainClass><layout>ZIP</layout></configuration><executions><execution><goals><!--可以把依賴的包都打包到生成的Jar包中--><goal>repackage</goal></goals></execution></executions> </plugin>參考
- docker安裝mysql8.0.18
- Ubuntu Docker 安裝
- docker 安裝以及部署springboot項目和連接mysql
- 完整的docker+springboot+mysql部署
- 在docker中運行mysql實例
- docker運行spring boot 包鏡像出現no main manifest attribute問題
總結
以上是生活随笔為你收集整理的ubuntu系统下安装docker并部署Springboot+mysql+redis的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国航经济舱具体包含哪些舱位 国航经济舱简
- 下一篇: 画蛇添足的寓意是什么 画蛇添足的故事告诉