通過Docker安裝啟動DB2在Spring?Boot整合DB2的方法
1 簡介
DB2是IBM的一款優(yōu)秀的關(guān)系型數(shù)據(jù)庫,簡單學(xué)習(xí)一下。
2 Docker安裝DB2
為了快速啟動,直接使用Docker來安裝DB2。先下載鏡像如下:
docker pull ibmcom/db2:11.5.0.0
啟動數(shù)據(jù)庫如下:
docker run -itd \ --name mydb2 \ --privileged=true \ -p 50000:50000 \ -e LICENSE=accept \ -e DB2INST1_PASSWORD=pkslow \ -e DBNAME=testdb \ ibmcom/db2:11.5.0.0
這樣獲得的數(shù)據(jù)庫,具體信息如下:
連接URL:jdbc:db2://localhost:50000/testdb
用戶名:db2inst1
密碼:pkslow
在IDEA上連接如下:

默認(rèn)的Schema為DB2INST1,測試SQL如下:
創(chuàng)建表:
CREATE TABLE EMPLOYEE_SALARY (DEPTNO CHAR(3) NOT NULL, DEPTNAME VARCHAR(36) NOT NULL, EMPNO CHAR(6) NOT NULL, SALARY DECIMAL(9,2) NOT NULL WITH DEFAULT);
插入數(shù)據(jù):
INSERT INTO EMPLOYEE_SALARY (DEPTNO, DEPTNAME, EMPNO, SALARY) VALUES ('001', 'IT', '001322', 80000.00);
INSERT INTO EMPLOYEE_SALARY (DEPTNO, DEPTNAME, EMPNO, SALARY) VALUES ('001', 'IT', '001323', 20000.00);
INSERT INTO EMPLOYEE_SALARY (DEPTNO, DEPTNAME, EMPNO, SALARY) VALUES ('002', 'Architecture', '001324', 3220.00);
INSERT INTO EMPLOYEE_SALARY (DEPTNO, DEPTNAME, EMPNO, SALARY) VALUES ('002', 'Architecture', '001325', 8000.00);
INSERT INTO EMPLOYEE_SALARY (DEPTNO, DEPTNAME, EMPNO, SALARY) VALUES ('003', 'Front Office', '001326', 13320.00);
INSERT INTO EMPLOYEE_SALARY (DEPTNO, DEPTNAME, EMPNO, SALARY) VALUES ('001', 'IT', '001327', 5433.00);查詢:
SELECT * FROM DB2INST1.EMPLOYEE_SALARY;

Spring Boot整合DB2
添加相關(guān)依賴:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.ibm.db2</groupId>
<artifactId>jcc</artifactId>
<version>11.5.0.0</version>
</dependency>
</dependencies>配置相關(guān)屬性:
server.port=8082 spring.datasource.url=jdbc:db2://localhost:50000/testdb spring.datasource.username=db2inst1 spring.datasource.password=pkslow spring.jpa.generate-ddl=true
創(chuàng)建Entity:
package com.pkslow.springboot.jpa.db2.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "EMPLOYEE", schema = "DB2INST1")
public class Employee {
@Id
private Long id;
private String name;
}創(chuàng)建Repository類用于操作數(shù)據(jù)庫:
public interface EmployeeRepository extends CrudRepository<Employee, Long> {
}最后,寫個(gè)方法測試一下:
@Configuration
@Slf4j
public class TestConfig {
@Autowired
private EmployeeRepository repository;
@PostConstruct
public void init() {
Employee employee1 = new Employee(1L, "Larry Deng");
Employee employee2 = new Employee(2L, "LarryDpk");
Employee employee3 = new Employee(3L, "Pkslow");
repository.deleteAll();
repository.save(employee1);
repository.save(employee2);
repository.save(employee3);
List<Employee> employees = StreamSupport.stream(repository.findAll().spliterator(), false)
.collect(Collectors.toList());
employees.forEach(e -> log.info(e.toString()));
}
}啟動后,日志打印正常如下:
2022-02-28 23:26:22.476 INFO 60847 --- [ main] c.pkslow.springboot.jpa.db2.TestConfig : Employee(id=1, name=Larry Deng) 2022-02-28 23:26:22.476 INFO 60847 --- [ main] c.pkslow.springboot.jpa.db2.TestConfig : Employee(id=2, name=LarryDpk) 2022-02-28 23:26:22.476 INFO 60847 --- [ main] c.pkslow.springboot.jpa.db2.TestConfig : Employee(id=3, name=Pkslow)
表數(shù)據(jù)如下:

代碼
代碼請看GitHub: https://github.com/LarryDpk/pkslow-samples
References:
PS:Docker中安裝DB2詳細(xì)教程
docker安裝db2 1、查詢可安裝的db2鏡像2、下載db2鏡像3、安裝鏡像4、切換用戶并運(yùn)行DB25、常用命令6、遇到的坑7、參考文章 1、查詢可安裝的db2鏡像
這里是單機(jī)安裝,直接安裝db2express-c,介紹網(wǎng)址 : libmcom / db2express-c
docker search db2express-c1

2、下載db2鏡像
docker pull ibmoms/db2express-c
這里我選用的是ibmoms/db2express-c,嘗試過網(wǎng)上教程上的很多鏡像,安裝完之后都有坑-_-||。
3、安裝鏡像
docker run -it --name db2 -p 50000:50000 -e DB2INST1_PASSWORD=db2 -e LICENSE=accept ibmoms/db2express-c:latest bash
-p 50000:50000 允許遠(yuǎn)程的客戶端可以從50000 端口連接到數(shù)據(jù)庫實(shí)例.通過指定 -e DB2INST1_PASSWORD=db2root-pwd 參數(shù), 你可以為缺省的Db2實(shí)例用戶db2inst1設(shè)置密碼.注意:這里“DB2INST1”是用戶名,而“b2root-pwd”是密碼。通過指定-e LICENSE=accept參數(shù), 表示你接受了使用Db2軟件的許可證協(xié)議.
有教程說要添加 –network=host ,我在添加后各種莫名的報(bào)錯╮(╯▽╰)╭
4、切換用戶并運(yùn)行DB2
$ su - db2inst1 //切換用戶 $ db2start //啟動DB2 $ db2sampl //創(chuàng)建默認(rèn)數(shù)據(jù)庫“SAMPLE”
5、常用命令
db2 create db [dbname] #創(chuàng)建數(shù)據(jù)庫 db2 list db directory #列出所有數(shù)據(jù)庫 db2 list active databases #列出所有激活的數(shù)據(jù)庫 db2 get db cfg #列出所有數(shù)據(jù)庫配置
6、遇到的坑
1.DB2 啟動SQL5043N
解決方案: DB2 啟動SQL5043N
官方解答: infocenter答案
[db2inst1@connections ~]$ db2level
DB21085I This instance or install (instance name, where applicable:
“db2inst1”) uses “64” bits and DB2 code release “SQL10014” with level
identifier “0205010E”.
Informational tokens are “DB2 v10.1.0.4”, “s140509”, “IP23584”, and Fix Pack
“4”.
Product is installed at “/opt/ibm/db2/V10.1”.
[db2inst1@connections ~]$ db2start
08/20/2014 22:19:54 0 0 SQL5043N Support for one or more communications protocols specified in the DB2COMM environment variable failed to start successfully. However, core database manager functionality started successfully.
SQL1063N DB2START processing was successful.
[db2inst1@connections ~]$ db2set DB2COMM=tcpip
[db2inst1@connections ~]$ db2stop
2014-08-20 22:21:17 0 0 SQL1064N DB2STOP processing was successful.
SQL1064N DB2STOP processing was successful.
[db2inst1@connections ~]$ db2start
08/20/2014 22:21:20 0 0 SQL5043N Support for one or more communications protocols specified in the DB2COMM environment variable failed to start successfully. However, core database manager functionality started successfully.
SQL1063N DB2START processing was successful.
[db2inst1@connections ~]$ db2 get dbm cfg
這里重點(diǎn)看SVCENAME屬性,修改命令:db2 update dbm cfg using SVCENAME 50000
[db2inst1@connections ~]$ db2 update dbm cfg using SVCENAME 50000
DB20000I The UPDATE DATABASE MANAGER CONFIGURATION command completed
successfully.
[db2inst1@connections ~]$ db2stop
2014-08-20 22:22:07 0 0 SQL1064N DB2STOP processing was successful.
SQL1064N DB2STOP processing was successful.
啟動成功
[db2inst1@connections ~]$ db2start
08/20/2014 22:22:11 0 0 SQL1063N DB2START processing was successful.
SQL1063N DB2START processing was successful.
[db2inst1@connections ~]$ db2 get dbm cfg | grep SVC
到此這篇關(guān)于通過Docker啟動DB2,并在Spring Boot整合DB2的文章就介紹到這了,更多相關(guān)Docker安裝DB2內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker啟動mysql服務(wù)的實(shí)現(xiàn)步驟
本文主要介紹了Docker啟動mysql服務(wù)的實(shí)現(xiàn)步驟,文中根據(jù)實(shí)例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟
這篇文章主要介紹了Gogs+Jenkins+Docker 自動化部署.NetCore,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06
Docker容器使用jenkins部署web項(xiàng)目(總結(jié))
這篇文章主要介紹了Docker容器使用jenkins部署web項(xiàng)目(總結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-08-08
Docker?AIGC等大模型深度學(xué)習(xí)環(huán)境搭建步驟最新詳細(xì)版
這篇文章主要介紹了Docker?AIGC等大模型深度學(xué)習(xí)環(huán)境搭建步驟最新詳細(xì)版,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05
Docker 容器全部停止的幾種方法實(shí)現(xiàn)
我們需要停止所有的容器時(shí),可以使用一些命令來實(shí)現(xiàn),本文主要介紹了Docker 容器全部停止的幾種方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08
Docker實(shí)現(xiàn)進(jìn)入容器內(nèi)部的方法
這篇文章主要介紹了Docker實(shí)現(xiàn)進(jìn)入容器內(nèi)部的方法,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
使用docker-tc對host容器進(jìn)行限流的操作方法
docker-tc是一個(gè)github開源項(xiàng)目,這篇文章主要介紹了使用docker-tc對host容器進(jìn)行限流,需要的朋友可以參考下2024-04-04

