Docker運(yùn)行環(huán)境要求系統(tǒng)為64位、Linux系統(tǒng)內(nèi)核版本為?3.8以上
1. Docker安裝
1.1 搭建gcc環(huán)境 (gcc是編程語(yǔ)言譯器)
yum -y install gcc
yum -y install gcc-c++
1.2 安裝需要的軟件包
yum install -y yum-utils
1.3 裝鏡像倉(cāng)庫(kù)
因?yàn)閐ocker的服務(wù)器是在國(guó)外,
所以有時(shí)候從倉(cāng)庫(kù)中下載鏡像的時(shí)候會(huì)連接被拒絕或者連接超時(shí)的情況!
因此可以使用阿里云鏡像倉(cāng)庫(kù)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.4 新yum軟件包索引
?yum makecache fast
?1.5 安裝docker引擎
yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
1.6 啟動(dòng)docker
systemctl start docker
1.7 查看docker版本
docker version
1.8 配置阿里云鏡像加速
?在CentOS下配置鏡像加速器
mkdir -p /etc/docker?
tee /etc/docker/daemon.json <<-'EOF'
{
? "registry-mirrors": ["你個(gè)人的阿里云鏡像加速器地址"]
}
EOF
systemctl daemon-reload
systemctl restart docker?
?docker已經(jīng)安裝完畢
2. docker安裝Mysql
2.1 拉取mysql鏡像
docker pull mysql:8.0.19
2.2 啟動(dòng)mysql
?# docker run 創(chuàng)建一個(gè)新的容器
docker run -d -p 23306:3306 --name mysql \
-v /usr/dcoker-mysql/log:/var/log/mysql \
-v /usr/docker-mysql/data:/var/lib/mysql \
-v /usr/docker-mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.19
命令參數(shù)說(shuō)明:
參數(shù)說(shuō)明:
-d ? 后臺(tái)運(yùn)行
-p 33060:3306 ?端口映射,宿主機(jī)的33060端口映射到容器3306端口
--name mysql ?容器名稱,可以自定義
-v /usr/dcoker-mysql/log:/var/log/mysql ?宿主機(jī)/usr/dcoker-mysql/log目錄與容器的/var/log/mysql目錄掛載,該目錄保存了mysql的日志
-v /usr/docker-mysql/data:/var/lib/mysql ?也是掛載,該目錄是mysql數(shù)據(jù)儲(chǔ)存的位置
-v /usr/docker-mysql/conf:/etc/mysql/conf.d ?也是掛載,該目錄放置配置文件的
-e MYSQL_ROOT_PASSWORD=123456 ?設(shè)置環(huán)境變量,該變量是設(shè)置root用戶的密碼,可自行修改
mysql:8.0.19? 鏡像名稱以及tag
如果不掛載數(shù)據(jù)卷,容器被刪掉之后,mysql數(shù)據(jù)庫(kù)里面的數(shù)據(jù)都會(huì)消失?
如果啟動(dòng)失敗,可以執(zhí)行docker logs -f -t --tail 1000? [容器id] ,查看日志,找失敗的原因
2.3 查看容器
docker ps?
?進(jìn)入容器執(zhí)行
# docker exec 在運(yùn)行的容器中執(zhí)行命令
docker exec -it mysql mysql -uroot -p123456
參數(shù)說(shuō)明: -i 以交互模式運(yùn)行容器 -t 為容器重新分配一個(gè)偽輸入終端 mysql -uroot -p123456 容器執(zhí)行的命令,直接進(jìn)入容器中的mysql?
*注意:安裝的mysql是8.x版本的,默認(rèn)的身份驗(yàn)證插件為caching_sha2_password,該插件不能使用舊版本的客戶端來(lái)連接;如果所使用的Navicat版本較舊,需要修改身份驗(yàn)證插件才能登錄。修改插件執(zhí)行:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
使用navicat連接后創(chuàng)建數(shù)表并插入數(shù)據(jù), 如果出現(xiàn)亂碼, 修改配置文件
執(zhí)行exit退出容器, 在宿主機(jī)中掛載的配置文件編寫
執(zhí)行 vim /usr/docker-mysql/conf/my.cnf, 這個(gè)目錄就是上面創(chuàng)建容器時(shí)掛載的數(shù)據(jù)卷
[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8
?保存之后執(zhí)行docker restart mysql
重啟容器
?3. docker部署redis
3.1 拉取redis鏡像
docker pull redis:6.0.8
3.2 創(chuàng)建配置文件
在宿主機(jī)上創(chuàng)建一個(gè)文件redis.conf, 路徑可以自定義, 這里提供一個(gè)配置文檔, 配置可根據(jù)自己的需求修改, 本文配置文件路徑: /usr/docker-redis/conf/reids.conf
# bind 127.0.0.1
protected-mode no
port 6379
tcp-backlog 511
#設(shè)置密碼為123456,可注釋掉
requirepass 123456timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 30
always-show-logo yes
save 900 1
save 300 10
save 60 10000stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush noappendonly yes
appendfilename "appendonly.aof"
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mbaof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-max-len 128
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100activerehashing yes
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
* 注意:daemonize no是關(guān)閉守護(hù)線程,如果開(kāi)啟的話容器會(huì)啟動(dòng)不起來(lái)?
根據(jù)個(gè)人需求進(jìn)行配置?
3.3 執(zhí)行以下命令啟動(dòng)容器
docker run -d -p 6379:6379 --name redis \
-v /usr/docker-redis/conf/redis.conf:/etc/redis/redis.conf \
-v /usr/docker-redis/data:/data \
redis redis-server /etc/redis/redis.conf
參數(shù)說(shuō)明:
-d ? 后臺(tái)運(yùn)行
-p 6379:6379 ?端口映射,<宿主機(jī)端口>:<容器端口>
--name redis ? 容器名稱,可以自定義
-v /usr/docker-redis/conf/redis.conf:/etc/redis/redis.conf ?宿主機(jī)/usr/docker-redis/conf/redis.conf文件與容器的/etc/redis/redis.conf文件掛載
-v /usr/docker-redis/data:/data ?也是掛載,該目錄是redis數(shù)據(jù)持久化文件儲(chǔ)存的位置
redis ? ?鏡像名稱
redis-server /etc/redis/redis.conf ? 以上面redis.conf文件寫的配置啟動(dòng)redis
啟動(dòng)redis容器之后,執(zhí)行docker ps查看是否啟動(dòng)成功
如果沒(méi)有啟動(dòng)成功可以執(zhí)行命令docker logs <容器名稱或id>查看日志;如果日志沒(méi)有內(nèi)容可能是配置中開(kāi)啟了守護(hù)線程的原因,關(guān)閉即可
啟動(dòng)成功后,執(zhí)行docker exec -it redis redis-cli命令進(jìn)入容器
如果設(shè)置了密碼,執(zhí)行auth 123456(123456配置中的密碼,沒(méi)有配置密碼的直接跳過(guò)這步)
?到這里redis就安裝完成了
4. docker部署java jar
4.1 將jar上傳到需要構(gòu)建鏡像的目錄
4.2?在當(dāng)前目錄下創(chuàng)建Dockerfile編寫Dockerfile (最好命名Dockerfile,否則構(gòu)建需要指定文件名)
#基礎(chǔ)鏡像使用jdk1.8
FROM openjdk:8-jdk-alpine
?
#作者
MAINTAINER pan
?
# VOLUME 指定臨時(shí)文件目錄為/tmp,在主機(jī)/var/lib/docker目錄下創(chuàng)建了一個(gè)臨時(shí)文件并鏈接到容器的/tmp
VOLUME /tmp
?
# 將jar包添加到容器中并更名
ADD ruoyi-admin.jar app.jar
?
# 運(yùn)行jar包
RUN bash -c 'touch /app.jar'
?
# 為了縮短 Tomcat 啟動(dòng)時(shí)間,添加一個(gè)系統(tǒng)屬性指向 “/dev/./urandom” 作為 Entropy Source
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
?
#ENTRYPOINT ["nohup","java","-jar","/data/app/ruoyi-admin.jar","&"]
?
#暴露8080端口
EXPOSE 8080
?4.3?構(gòu)建鏡像 (需要在Dockerfile同級(jí)目錄下構(gòu)建,執(zhí)行次命令)
docker build -t app:1.0 .? ? # 注意末尾的點(diǎn)不能去掉
4.4 構(gòu)建成功后查看當(dāng)前的鏡像, 構(gòu)建過(guò)程中如果沒(méi)有拉取過(guò)openjdk:8-jdk-alpine,需要等待下載
docker images
4.5 啟動(dòng)后端項(xiàng)目鏡像
?docker run -d --name app-container?-p 8080:8080 app:1.0
?4.6 查看容器是否啟動(dòng)成功
docker?ps , 如果成功過(guò)則代表后端部署完成
可以訪問(wèn)進(jìn)一步驗(yàn)證
后端部署完成
4.7 如果容器沒(méi)有啟動(dòng)成功, 請(qǐng)看這一步
查看容器的日志
docker logs -f -t --tail 1000 [容器ID]文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-752609.html
?通過(guò)日志確定問(wèn)題,將報(bào)錯(cuò)進(jìn)行復(fù)制,進(jìn)行百度搜索,自行解決?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-752609.html
到了這里,關(guān)于Docker DockerFile部署java jar項(xiàng)目包,以及Mysql,Redis的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!