使用docker部署springboot應用

修改Springboot應用的application.properties文件,將mysql host改爲mysql docker容器名(此處爲mysql1跟docker-compose.yaml文件一致。)

spring.datasource.url=jdbc:mysql://mysql1:3306/SPPanBlog?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
spring.datasource.username=root
spring.datasource.password=123456

在Springboot應用根目錄下使用mvn package打包。
在d:/創建d:/docker目錄,裏面分別創建blog和mysql目錄。
在d:/docker/mysql目錄下創建my.cnf文件,內容如下:

[mysql]
default-character-set=utf8

[mysqld]
character-set-server=utf8

創建d:/docker/blog/Dockerfile文件,內容如下:

#基於哪個鏡像
FROM java:8

# 將本地文件夾掛載到當前容器
VOLUME /tmp

# 拷貝文件到容器,也可以直接寫成ADD microservice-discovery-eureka-0.0.1-SNAPSHOT.jar /app.jar
ADD SPPanBlog4SpringBoot-0.0.1-SNAPSHOT.jar /app.jar
#RUN bash -c 'touch /app.jar'

# 開放8080端口
EXPOSE 8080

# 配置容器啓動後執行的命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]    

將應用jar包(此處爲SPPanBlog4SpringBoot-0.0.1-SNAPSHOT.jar)拷貝到d:/docker/blog目錄下。

創建d:/docker/docker-compose.yaml文件,內容如下:

mysql1:
  image: mysql:5.7
  volumes:
         - d:/docker/mysql/my.cnf:/etc/mysql/my.cnf mysql
         - d:/data/mysql:/var/lib/mysql
  environment:
     - MYSQL_ROOT_PASSWORD=123456
  ports:
        - "3306:3306"
  expose:
         - "3306"

blog:
  build: ./blog
  ports:
    - "8080:8080" #端口映射
  expose:
    - 8080        #暴露容器端口
  links:
    - mysql1

進入cmd,執行下面命令

d:
cd d:/docker
docker-compose up

然後就等待image自動構建,啓動後mysql應該能啓動,但是應用應該無法啓動,原因是未找到對應database。
通過navicat(或者其他數據庫工具)連接localhost的mysql,賬號root,密碼:123456,然後創建SPPanBlog數據庫。
執行docker ps,然後執行docker stop ,關閉對應mysql的容器。
再次執行docker-compose up,應該能執行應用。
然後通過navicat連接mysql,導入初始數據(import.sql)。

所有代碼已經上傳到碼雲上。https://gitee.com/39627020/sppanblog4springboot

發佈了64 篇原創文章 · 獲贊 16 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章