日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

disconf mysql_Docker搭建disconf环境,三部曲之三:细说搭建过程

發布時間:2023/12/4 数据库 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 disconf mysql_Docker搭建disconf环境,三部曲之三:细说搭建过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Docker下的disconf實戰全文鏈接

細說搭建過程

在前兩章中,我們利用遠程或本地的鏡像,快速體驗了本地啟動disconf的過程,本章我們一起來分析和梳理整個定制和搭建過程,了解這些后,我們就能根據自己的需要來定制本地的disconf環境了。

以下兩點請注意

本機環境已經安裝了maven,并且把maven的bin目錄配置到環境變量PATH下;

編譯編譯disconf源碼時,要用到官方shell腳本,所以本次實踐的操作系統建議用linux或mac,如果用windows,有三種方法:一個是把shell改成bat腳本,一個是用虛擬機的linux,還有一種是用在docker上搭建一個maven容器,把disconf源碼放在這個容器下編譯;

先分析再實戰

首先把disconf環境依賴的所有server都列出來:

redis

zookeeper

mysql

tomcat

nginx

下一步,是理清各個server之間的依賴關系(例如tomcat上的業務要連接mysql數據庫),依賴關系如下,搞清楚了這個就知道link參數怎么寫了:

server的關系已經理清了,接下來就要開始定制mysql,tomcat,nginx這些鏡像了,首先是準備材料,disconf是個開源的應用,我們可以在git上下載最新的源碼,執行命令:

git clone git@github.com:knightliao/disconf.git

下載完畢,打開文件夾,內容如下圖:

接下來我們開始實戰把,實戰一共五個步驟,依次是: 定制mysql鏡像 -> 定制tomcat鏡像 -> 定制nginx鏡像 -> 編寫docker-compose腳本 -> docker-compose啟動

定制mysql鏡像###

mysql定制:目的是讓容器在創建時自動執行sql腳本,創建庫和表,并導入初始化數據,在docker上實現數據庫腳本自動執行的方法可以參照《讓docker中的mysql啟動時自動執行sql》一文,這里簡單說一下步驟:

打開disconf源碼文件夾,在disconf/disconf-web/sql目錄下找到以下四個文件:

0-init_table.sql

1-init_data.sql

201512/20151225.sql

20160701/20160701.sql

新建一個目錄mysql,把上面提到的四個sql文件復制到這個目錄下,再新建一個名為install_data.sh的腳本,內容如下:

#!/bin/bash

mysql -uroot -p$MYSQL_ROOT_PASSWORD <

source $WORK_PATH/$FILE_0;

source $WORK_PATH/$FILE_1;

source $WORK_PATH/$FILE_2;

source $WORK_PATH/$FILE_3;

內容很簡單,就是自動登錄mysql,密碼是docker啟動的時候傳入的環境變量,然后執行四個sql腳本文件

在mysql目錄下新建Dockerfile文件,內容如下:

# Docker image of disconf mysql

# VERSION 0.0.1

# Author: bolingcavalry

#基礎鏡像使用daocloud.io/library/mysql:8

FROM daocloud.io/library/mysql:8

#作者

MAINTAINER BolingCavalry

#定義工作目錄

ENV WORK_PATH /usr/local/work

#定義會被容器自動執行的目錄

ENV AUTO_RUN_DIR /docker-entrypoint-initdb.d

#定義sql文件名

ENV FILE_0 0-init_table.sql

ENV FILE_1 1-init_data.sql

ENV FILE_2 20151225.sql

ENV FILE_3 20160701.sql

#定義shell文件名

ENV INSTALL_DATA_SHELL install_data.sh

#創建文件夾

RUN mkdir -p $WORK_PATH

#把數據庫初始化數據的文件復制到工作目錄下

COPY ./$FILE_0 $WORK_PATH/

COPY ./$FILE_1 $WORK_PATH/

COPY ./$FILE_2 $WORK_PATH/

COPY ./$FILE_3 $WORK_PATH/

#把要執行的shell文件放到/docker-entrypoint-initdb.d/目錄下,容器會自動執行這個shell

COPY ./$INSTALL_DATA_SHELL $AUTO_RUN_DIR/

#給執行文件增加可執行權限

RUN chmod a+x $AUTO_RUN_DIR/$INSTALL_DATA_SHELL

打開終端在mysql目錄下執行以下命令,構建msql鏡像:

docker build -t conf_mysql:0.0.1 .

msql鏡像構建成功

定制tomcat鏡像###

構建tomcat鏡像時最重要的就是war包的生成,步驟如下:

創建兩個文件夾,分別設置到ONLINE_CONFIG_PATH和WAR_ROOT_PATH這兩個環境變量中,環境變量的設置方式在不同的操作系統下各不相同,我用的是mac,配置方式是在~/.bash_profile文件中加入以下內容(寫完記得執行source ~/.bash_profile使環境變量在當前命令行窗口生效):

ONLINE_CONFIG_PATH=/Users/zq2599/temp/201705/03/005/online-resources

WAR_ROOT_PATH=/Users/zq2599/temp/201705/03/005/war

export ONLINE_CONFIG_PATH

export WAR_ROOT_PATH

/Users/zq2599/temp/201705/03/005/online-resources和/Users/zq2599/temp/201705/03/005/war都是剛剛新建的文件夾;

打開disconf的源文件的子目錄disconf-web/profile/rd,里面的文件如下圖:

把這些文件全部復制到ONLINE_CONFIG_PATH變量對應的目錄下,在這個目錄下依次修改jdbc-mysql.properties,redis-config.properties,zoo.properties這三個文件:

jdbc-mysql.properties的改動如下圖,主要是數據url改成一個固定的名字mysqlhost,這個在docker run的時候要和link參數中的別名一致,還有就是數據庫的用戶名密碼:

redis-config.properties的改動如下圖,主要是host參數,也要和docker run時候的link參數的別名對齊,注意,這里要配置兩個redis

zoo.properties的配置如下圖,主要是host參數,也要和docker run時候的link參數的別名對齊:

把application-demo.properties文件改名為application.properties

好了,修改參數的事情就算做完了,有了這些和link參數一致的host配置,tomcat在運行的時候就能連接上對應的容器了。

現在我們用maven來編譯和打包disconf的源碼,用終端進入disconf源碼的disconf-web子目錄,執行以下命令開始編譯和打包:

sh deploy/deploy.sh

執行完畢后,在環境變量WAR_ROOT_PATH對應的目錄下,可以看到編譯和打包的結果,如下圖:

新建一個名叫tomcat的文件夾,把上圖中的disconf-web.war復制到這個文件夾下,再在這里新增一個server.xml文件,內容如下,用來指定tomcat服務的根路徑對應的應用:

type="org.apache.catalina.UserDatabase"

description="User database that can be updated and saved"

factory="org.apache.catalina.users.MemoryUserDatabaseFactory"

pathname="conf/tomcat-users.xml" />

connectionTimeout="20000"

redirectPort="8443" />

resourceName="UserDatabase"/>

unpackWARs="true" autoDeploy="true">

prefix="localhost_access_log." suffix=".txt"

pattern="%h %l %u %t "%r" %s %b" />

這個配置信息和官方tomcat中的server.xml文件相比,其實只增加了下面這一個節點的內容:

在tomcat文件夾下新增Dockerfile文件,內容如下:

# Docker image of disconf tomcat

# VERSION 0.0.1

# Author: bolingcavalry

#基礎鏡像使用tomcat:7.0.77-jre8

FROM tomcat:7.0.77-jre8

#作者

MAINTAINER BolingCavalry

#定義工作目錄

ENV TOMCAT_BASE /usr/local/tomcat

#復制配置文件

COPY ./server.xml $TOMCAT_BASE/conf/

#復制war包

COPY ./disconf-web.war $TOMCAT_BASE/webapps/

#給配置文件增加讀權限

RUN chmod a+xr $TOMCAT_BASE/conf/server.xml

#刪除默認的ROOT文件件

RUN rm -rf $TOMCAT_BASE/webapps/ROOT

看的出Dockerfile做的事情并不多,就是復制war包,復制server.xml,刪除默認的ROOT應用文件夾這些事情;

現在打開終端在tomcat目錄下執行以下命令,構建tomcat鏡像:

docker build -t conf_tomcat:0.0.1 .

tomcat鏡像構建成功!

構建nginx鏡像###

新建一個nginx目錄,在里面新增一個nginx.conf文件,內容如下:

user nginx;

worker_processes 1;

error_log /var/log/nginx/error.log warn;

pid /var/run/nginx.pid;

events {

worker_connections 1024;

}

http {

include /etc/nginx/mime.types;

default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;

#tcp_nopush on;

keepalive_timeout 65;

#gzip on;

#include /etc/nginx/conf.d/*.conf;

upstream disconf {

server tomcathost:8080;

}

server {

listen 80;

server_name localhost;

access_log logs/disconf_access.log;

error_log logs/disconf_error.log;

location / {

root /usr/local/work/html;

if ($query_string) {

expires max;

}

}

location ~ ^/(api|export) {

proxy_pass_header Server;

proxy_set_header Host $http_host;

proxy_redirect off;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Scheme $scheme;

proxy_pass http://disconf;

}

}

}

主要的配置有三點:

將默認的/etc/nginx/conf.d/*.conf配置注釋掉;

增加tomcat的host信息,“tomcathost”和后面docker run的link參數的別名保持一致;

動靜分離的配置,請求url中如果帶有api和export,nginx就把請求轉發到tomcathost:8080,其他的請求直接訪問nginx服務器的/usr/local/work/html文件夾;

在環境變量WAR_ROOT_PATH對應的目錄下,有個html文件夾如下圖紅框位置,這是web工程全部靜態文件,把這個文件夾復制到剛才新建的nginx目錄下:

在nginx文件夾下新增Dockerfile文件,內容如下:

# Docker image of disconf nginx

# VERSION 0.0.1

# Author: bolingcavalry

#基礎鏡像使用nginx:stable

FROM nginx:stable

#作者

MAINTAINER BolingCavalry

#定義工作目錄

ENV WORK_PATH /usr/local/work/html

#定義nginx配置文件所在目錄

ENV NGINX_CONF_DIR /etc/nginx

#定義nginx配置文件名稱

ENV NGINX_CONF_FILE_NAME nginx.conf

#創建工作文件夾

RUN mkdir -p $WORK_PATH

#創建nginx日志文件夾

RUN mkdir -p /etc/nginx/logs/

#復制nginx配置文件

COPY ./$NGINX_CONF_FILE_NAME $NGINX_CONF_DIR/

#復制網頁的靜態資源文件

COPY ./html $WORK_PATH/

#給配置文件增加讀權限

RUN chmod a+xr $NGINX_CONF_DIR/$NGINX_CONF_FILE_NAME

現在打開終端在nginx目錄下執行以下命令,構建nginx鏡像:

docker build -t conf_nginx:0.0.1 .

nginx鏡像構建成功!

編寫docker-compose腳本###

新增一個docker-compose.yml文件(位置無所謂),內容如下:

version: '2'

services:

disconf_redis_1:

image: daocloud.io/library/redis

restart: always

disconf_redis_2:

image: daocloud.io/library/redis

restart: always

disconf_zookeeper:

image: zookeeper:3.3.6

restart: always

disconf_mysql:

image: conf_mysql:0.0.1

environment:

MYSQL_ROOT_PASSWORD: 123456

restart: always

disconf_tomcat:

image: conf_tomcat:0.0.1

links:

- disconf_redis_1:redishost001

- disconf_redis_2:redishost002

- disconf_zookeeper:zkhost

- disconf_mysql:mysqlhost

restart: always

disconf_nginx:

image: conf_nginx:0.0.1

links:

- disconf_tomcat:tomcathost

ports:

- "80:80"

restart: always

按照我們最初梳理的依賴關系,啟動兩個redis官方鏡像,一個zookeeper官方鏡像,再啟動定制的msyql鏡像,然后tomcat啟動并通過link關聯redis,zookeeper,mysql等容器,最后是定制的nginx啟動,link關聯tomcat,并且nginx容器的80端口映射到當前電腦的80端口;

啟動所有容器###

在docker-compose.yml文件所在的目錄下,執行命令:

docker-compose up -d

終端會顯示正在啟動各個容器,如下圖,每個容器的名稱會被docker-compose加上前綴和后綴:

tomcat的應用啟動需要一點時間,我們可以通過docker logs -f disconf_disconf_tomcat_1命令來查看tomcat啟動日志,disconf_disconf_tomcat_1是容器名稱,如上圖中的紅框所示。

啟動完畢后,在瀏覽器上輸入localhost,可以看見熟悉的disconf登錄頁面,用戶名admin,密碼admin,登錄進去試試吧:

至此,disconf環境搭建三部曲已經結束,從體驗到親手一步一步配置都經歷了,我們可以按照自己的要求為自己定制一個disconf環境了。

后面的文章中,我們一起來實戰一下disconf系統的使用吧,體驗一下動態配置給業務帶來的便利。

歡迎關注我的公眾號

總結

以上是生活随笔為你收集整理的disconf mysql_Docker搭建disconf环境,三部曲之三:细说搭建过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩免费在线视频 | 国产视频在线免费观看 | 99爱免费视频 | 日韩二级片 | 日本少妇裸体做爰 | 中文字幕在线观看网站 | 色爽爽爽| 蜜臀网在线 | 亚色中文 | 久久久久久久毛片 | 成年人视频在线播放 | 日韩精品中文字幕一区二区三区 | 免费毛片一区二区三区 | 激情xxxx| 久久久久久国产精品三区 | 欧美精品videos另类日本 | 欧美成人自拍视频 | 99久久毛片| 日韩精品乱码久久久久久 | 波多野结衣电影免费观看 | 亚洲美女综合网 | 午夜精品福利一区二区三区蜜桃 | 波多野结衣乳巨码无在线观看 | 欧美xxxx8888 | 婷婷一区二区三区 | www.色多多| 亚洲国产成人久久 | 成人免费视频网站在线观看 | 99久久精品免费看国产交换 | 亚洲熟妇av一区二区三区 | 国产三级精品三级在线观看 | 隔壁人妻偷人bd中字 | 国产美女毛片 | 日韩欧美高清片 | 欧美激情一区二区三级高清视频 | 视频一区欧美 | 无码人妻精品一区二区蜜桃网站 | 在线a网 | 中文字字幕在线中文乱码 | 欧美大片一区二区三区 | 精品国产1区 | 成人av免费| aaaaaaa毛片 | 免费日韩在线 | 中文字幕线人 | 国产精品区一区二 | 国产精品一级 | 在线观看免费视频一区二区 | 波多野结衣中文字幕一区二区 | 国产一区二区三区视频免费观看 | 婷婷激情久久 | 任你躁av一区二区三区 | 国产在线a视频 | 奇米888一区二区三区 | 不卡的毛片 | 欧美日韩亚洲精品内裤 | 91精品综合久久久久久五月天 | www.性欧美| 国产精品一区二区av | 男人的天堂欧美 | 久久精品国产99久久不卡 | 日韩精品啪啪 | 精品一二区 | 欧美一级精品 | 国产麻豆电影在线观看 | 色网站免费观看 | 天降女子 | 麻豆亚洲 | 中文字幕日韩电影 | 波多野结衣一区二区三区在线观看 | 国产一区二区电影 | 红桃视频国产 | 少妇xxxx | 国产伦精品一区二区三区免.费 | 久久精品噜噜噜成人88aⅴ | 精品国产一区一区二区三亚瑟 | 日本亚洲高清 | 久久怡红院 | 最新中文在线视频 | 偷偷在线观看免费高清av | 色妹av| 在线看成人| 最新欧美日韩 | 麻豆成人久久精品一区二区三区 | 西西午夜 | 精品自拍一区 | 亚州av在线| 香蕉视频网址 | 亚洲欧洲无码一区二区三区 | 欧美 日韩 高清 | 少妇看片 | 国产一区二区三区四区五区美女 | 中文字幕在线免费观看视频 | 久久国产精品影院 | 强videoshd酒醉 | 欧美日本不卡 | 久久老熟女一区二区三区 | av网站久久| 91肉色超薄丝袜脚交一区二区 |