使用Docker容器部署java運行環境(java8 + mysql5 + redis5 + nginx1.14

一.Docker環境安裝

1.1 安裝工具

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

1.2 爲yum源添加docker倉庫位置

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

1.3 將軟件包信息提前在本地索引緩存

(非必要,建議執行,可以提升yum安裝的速度,報錯去掉fast試試)

sudo yum makecache fast

1.4 安裝Docker

sudo yum install docker-ce docker-ce-cli containerd.io

傻瓜式安裝 點擊y

1.5 啓動Docker

sudo systemctl start docker

1.6 設置開機自啓動

systemctl enable docker

1.7 安裝完成後可以測試一下,是否安裝成功

docker run hello-world

1.8 配置Docker鏡像加速器

配置加速器,否則下載鏡像的時候回比較慢,默認是從docker hub下載

vi /etc/docker/daemon.json

按 i 進入編輯模式 修改內容爲:

 
  1. {
  2. "registry-mirrors": ["https://5pfmrxk8.mirror.aliyuncs.com"]
  3. }
 

按esc推遲INSERT模式後,shift + zz 保存並退出

重新加載配置:

sudo systemctl daemon-reload

重啓Docker:

sudo systemctl restart docker

二 基本項目運行環境搭建

2.1 安裝jdk1.8

2.1.1通過DOCKER SEARCH命令查找遠程鏡像

docker search jdk

2.1.2、選擇一個遠程鏡像下載到本地倉庫

docker pull kdvolder/jdk8

注意:如果沒指定版本號默認下載最新(latest)

2.1.3、查看鏡像是否下載到本地倉庫

docker images

2.1.4、在DOCKER容器中運行鏡像

docker run -di --name=jdk1.8 kdvolder/jdk8

此時,運行成功返回一長串類型uuid的東東,表示docker容器已經運行了jdk。

2.1.5、查看DOCKER進程JDK是否啓動成功

docker ps

2.1.6、進入容器查看JDK版本

進入容器

docker exec -it jdk1.8 /bin/bash

查看jsk版本

java -version

 

2.2 安裝MySql

這裏以5.7版本爲例 其他版本只需要改一下版本號就行了

sudo docker pull mysql:5.7
2.2.1 啓動MySql服務
 
  1. docker run -p 3306:3306 --name myData \
  2. -v /usr/local/docker/mysql/conf:/etc/mysql \
  3. -v /usr/local/docker/mysql/logs:/var/log/mysql \
  4. -v /usr/local/docker/mysql/data:/var/lib/mysql \
  5. -e MYSQL_ROOT_PASSWORD=123456 \
  6. -d mysql:5.7
 

-p 3306:3306 : 第一個3306是liunx的端口號,第二個3306 是Docker容器的端口號.要想遠程訪問這個數據庫 就要先通過遠程訪問Linux的端口,再映射到docker容器的端口訪問mysql

–name myData: myData是容器啓動後的名字,可以自定義,但是建議見名知意

-e MYSQL_ROOT_PASSWORD=123456 : MySql啓動需要的賬戶密碼,默認root賬戶,我這裏設置123456

-v /usr/local/docker/mysql/data:/var/lib/mysql : 設置數據存儲路徑 冒號左面的表示宿主機的掛載目錄,冒號右邊則表示容器內部的路徑

-d : 表示後臺啓動該服務

mysql:5.7 : 安裝的數據庫的版本,我們拉取的是5.7版本

(注:複製的時候不要刪除 \ )

啓動成功後會返回一個容器id 如圖所示:

2.2.2 配置MySql外網連接權限

想要遠程連接數據庫,需要配置MySql的外網連接權限

進入mysql容器 這裏的名字就是剛纔設置的name

docker exec -it myData /bin/bash

進入數據庫 -u接用戶名(默認root) -p接密碼(剛纔設置的密碼)

mysql -uroot -p123456

設置外網訪問授權

grant all privileges on *.* to root@'%' identified by "password"

刷新權限

flush privileges

授權後 更新一下密碼,否則連接時候報錯1045

alter user 'root'@'%' identified with mysql_native_password by '123456'

再次刷新權限

flush privileges

退出mysql

docker 安裝mysql 以及redis 默認沒有配置文件,有需要的需要自己掛在配置文件(非必要步驟)

vim /etc/my.cnf

然後插入以下配置

 
  1. [client]
  2. default-character-set=utf8
  3.  
  4. [mysql]
  5. default-character-set=utf8
  6.  
  7. [mysqld]
  8. init_connect='SET collation_connection = utf8_unicode_ci'
  9. init_connect='SET NAMES utf8'
  10. character-set-server=utf8
  11. collation-server=utf8_unicode_ci
  12. skip-character-set-client-handshake
  13. skip-name-resolve
 

然後重啓mysql容器即可

執行命令:docker restart mysql (容器名稱) 進行重啓

 

2.2.3 開放服務器3306端口
 
  1. systemctl start firewalld
  2. firewall-cmd --zone=public --add-port=3306/tcp --permanent
  3. firewall-cmd --reload
 
2.2.4 如果是雲平臺,需要配置安全組,放行3306端口

(不配置報錯2003)配置過程略

2.2.5 測試連接

2.3 安裝Redis

拉取Redis5.0的docker鏡像
docker pull redis:5
重啓一下docker ,防止redis啓動失敗
sudo systemctl restart docker
重啓後記得啓動MySql
docker start myData
創建以下文件及文件夾,方便配置及管理redis
 
  1. mkdir -p /docker/redis
  2. mkdir -p /docker/redis/data
  3. touch /docker/redis/redis.conf
 
編輯配置文件
vim /docker/redis/redis.conf
 
  1. # 不開啓守護進程
  2. daemonize no
  3. # 指定Redis端口爲6379(默認)
  4. port 6379
  5. # 不要綁定的主機地址,那樣無法在容器外部訪問
  6. bind 0.0.0.0
  7. #需要密碼則打開
  8. requirepass 123456
  9. # 持久化
  10. appendonly yes
  11. 12345678910
 
啓動Redis
 
  1. docker run \
  2. -p 6379:6379 \
  3. --name redis \
  4. -v /docker/redis/redis.conf:/etc/redis/redis.conf \
  5. -v /docker/redis/data:/data \
  6. --restart=always \
  7. -d redis:5 redis-server /etc/redis/redis.conf
 

啓動成功返回id

開放服務器6379端口
 
  1. systemctl start firewalld
  2. firewall-cmd --zone=public --add-port=6379/tcp --permanent
  3. firewall-cmd --reload
 
雲平臺配置安全組

測試連接

2.4安裝Nginx

2.4.1 拉取鏡像文件
docker pull nginx:1.14.1

2.4.2、創建Nginx配置文件

啓動前需要先創建Nginx外部掛載的配置文件( /home/nginx/conf/nginx.conf)
之所以要先創建 , 是因爲Nginx本身容器只存在/etc/nginx 目錄 , 本身就不創建 nginx.conf 文件
當服務器和容器都不存在 nginx.conf 文件時, 執行啓動命令的時候 docker會將nginx.conf 作爲目錄創建 , 這並不是我們想要的結果 。
 
  1. # 創建掛載目錄
  2. mkdir -p /home/nginx/confmkdir -p /home/nginx/logmkdir -p /home/nginx/html
 
容器中的nginx.conf文件和conf.d文件夾複製到宿主機
 
  1. # 生成容器
  2. dockerrun --name nginx -p 9001:80 -d nginx# 將容器nginx.conf文件複製到宿主機docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf# 將容器conf.d文件夾下內容複製到宿主機docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d# 將容器中的html文件夾複製到宿主機docker cp nginx:/usr/share/nginx/html /home/nginx/
 

2.4.3.創建Nginx容器並運行

Docker 創建Nginx容器
 
  1. # 關閉該容器
  2. docker stop nginx
  3. # 刪除該容器d
  4. docker rm nginx
 
 
  1. docker run \
  2. -p 9002:80 \
  3. --name nginx \
  4. -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
  5. -v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
  6. -v /home/nginx/log:/var/log/nginx \
  7. -v /home/nginx/html:/usr/share/nginx/html \
  8. -d nginx:latest
 

命令

描述

–name nginx

啓動容器的名字

-d

後臺運行

-p 9002:80

將容器的 9002(後面那個) 端口映射到主機的 80(前面那個) 端口

-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf

掛載nginx.conf配置文件

-v /home/nginx/conf/conf.d:/etc/nginx/conf.d

掛載nginx配置文件

-v /home/nginx/log:/var/log/nginx

掛載nginx日誌文件

-v /home/nginx/html:/usr/share/nginx/html

掛載nginx內容

nginx:latest

本地運行的版本

\

shell 命令換行

單行模式啓動
docker run -p 9002:80 --name nginx -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/nginx/log:/var/log/nginx -v /home/nginx/html:/usr/share/nginx/html -d nginx:latest

2.4.4、修改內容進行展示

# 重啓容器docker restart nginx

 

 

參考:https://blog.csdn.net/BThinker/article/details/123507820

https://blog.csdn.net/barry_yang3111/article/details/127099809

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章