日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

ubuntu系统下安装docker并部署Springboot+mysql+redis

發布時間:2023/12/3 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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實例

  • 下載mysql鏡像:
    docker pull mysql:8.0.18
  • 運行鏡像,設置root賬號初始密碼(123456),映射本地宿主機端口3306到Docker端口3306。
  • docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /usr/local/mysql/data:/var/lib/mysql:rw -v /usr/local/mysql/mysql-files:/var/lib/mysql-files:rw -v /usr/local/mysql/log:/var/log/mysql:rw -v /usr/local/mysql/config:/etc/mysql:rw -v /etc/localtime:/etc/local/time:ro --restart=always -d 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 則需要修改

  •  ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'FLUSH PRIVILEGES; //刷新數據庫權限
  • 退出mysql容器:
    exit
  • 構建Redis容器

    與構建mysql容器類似

  • 拉取鏡像
    docker pull redis:latest
  • 運行容器
    docker run -itd --name redis -p 6379:6379 redis
  • 進入容器,檢測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的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。