感谢松鼠和健哥的指导!
通过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所示。