docker-compose部署Springboot+Mysql

感谢松鼠和健哥的指导!

通过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 或者 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对应的容器名字:

docker-compose部署Springboot+Mysql_第1张图片

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");

效果图

docker-compose部署Springboot+Mysql_第2张图片

Springboot的配置

特别注意yml文件中不是localhost而是服务的名字,mysql!!!!!!(因为主机的名字是mysql)

用户名记得改为city,如docker-compose.yml所示。

docker-compose部署Springboot+Mysql_第3张图片

你可能感兴趣的:(原创)