docker-compose springboot+mysqlアクセスデータベースの構成

2308 ワード

一、sprigbootプロジェクトの作成
Springbootプロジェクト構成
1.プロジェクトの正常な構成は1つのcontrollerを書いてdbデータを取得する
@RestController
public class Hello {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @RequestMapping("/hi")
    public String hello(){
        String sql = "SELECT * FROM person";
        Map stringObjectMap = jdbcTemplate.queryForMap(sql);
        return "docker hello world!"+ JSON.toJSONString(stringObjectMap);
    }
}

2.アプリケーションの構成yml
# mysqldbserver     docker-compose.yml    container_name
sprig:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://mysqldbserver:3306/sys?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: 123456

3.springbootのDockerfile 1
FROM java:8
  
VOLUME /vol/development
 
RUN mkdir -p /vol/development
 
WORKDIR /vol/development
 
COPY    jar .jar /vol/development/app.jar
 
CMD ["java", "-Xmx200m", "-Djava.security.egd=file:/dev/./urandom","-jar","/vol/development/app.jar"]

4.mysqlのDockerfile
FROM mysql:5.7.17

5.docker-compose.yml
version : '3'
services:
  mysqldbserver:
    container_name: mysqldbserver
    image: mysql:5.7.17 
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "3306:3306"
    command: [
          'mysqld',
          '--innodb-buffer-pool-size=20M',
          '--character-set-server=utf8',
          '--collation-server=utf8_general_ci',
          '--default-time-zone=+8:00',
          '--lower-case-table-names=1'
        ]
    environment:
      MYSQL_DATABASE: sys
      MYSQL_ROOT_PASSWORD: 123456
  springappserver:
    container_name: springappserver
    build:
      context: .
      dockerfile: Dockerfile1
    ports:
      - "8080:8080"
    volumes:
      - /vol/development
    depends_on:
      - mysqldbserver
    links:
      - mysqldbserver

テスト
1.以上のファイルと打つjarは1つのディレクトリを置きます
2.ディレクトリパスコマンドdocker-compose upで起動
3.コンテナipのデータベースに接続し、sysデータベースの下にpersonテーブルを新規作成してデータを書き込む.
3.ブラウザ`https:コンテナip:8080/hi`アクセスクエリーデータ