感謝松鼠和健哥的指導!
通過Docker進行一個簡單的Jar包的部署。
Jar包鏡像的製作
下面的項目會有一點點問題,就是docker-compose文件對不上,請參照下面的進行修改。此外,application.yml也必須進行相應的更改,需要更改的是數據庫的username。
City Service項目的github地址: https://github.com/zhaoyangyingmu/CityService
登陸遠程主機後
1. 創建文件夾:mkdir city-image && cd city-image。
2. 上傳jar包到當前目錄,可以通過wget <github jar包地址的方式> 或者 pscp 或者scp的方式。
3. 在當前目錄下,創建並編輯Dockerfile文件:touch Dockerfile && vim Dockerfile
FROM java:8
COPY CityService.jar /CityService.jar
CMD ["java","-jar","/CityService.jar"]
4. 生成鏡像 (注意最後面有個句號,表示使用當前目錄下的Dockerfile進行創建):
docker build -t cityservice .
docker-compose.yml的創建
接下來,進入其他目錄創建docker-compose.yml
1. 創建新目錄city-service: cd .. -> mkdir city-service -> cd city-service
2. 創建db目錄: mkdir db
3. 創建docker-compose.yml文件: touch docker-compose.yml
最好不要將本地mysql掛載到docker容器裏面,否則會出現意想不到的錯誤!
內容爲:
version: "3"
services:
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: '123456'
MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
MYSQL_DATABASE: 'city'
MYSQL_USER: 'city'
MYSQL_PASSWORD: '123456'
volumes:
"./db:/var/lib/mysql"
networks:
- city_web
web:
image: cityservice:latest
environment:
depends_on:
- mysql
ports:
- "4006:8080"
networks:
- city_web
networks:
city_web:
4. 啓動容器: docker-compose up
Mysql初始化
1. 通過docker ps 查看正在運行的容器,找到mysql對應的容器名字:
2. 上傳初始化sql文件到該目錄,然後拷貝sql文件到容器中: docker cp ./*.sql container_name:/root
2. 通過docker exec -it container_name /bin/bash進入容器
3. 進入mysql: 輸入mysql -u root -p 然後輸入密碼123456
4. source /root/*.sql文件,完成初始化。
DROP DATABASE IF EXISTS city;
CREATE DATABASE city;
USE city;
CREATE TABLE city (
id INT(11) NOT NULL AUTO_INCREMENT,
province_id INT(10) NOT NULL,
city_name varchar(100),
description text,
PRIMARY KEY(id)
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
INSERT INTO city VALUES (1, 1, "city", "desc");
效果圖
Springboot的配置
特別注意yml文件中不是localhost而是服務的名字,mysql!!!!!!(因爲主機的名字是mysql)
用戶名記得改爲city,如docker-compose.yml所示。