Linux下Tomcat+Java+Sqlserver接入實踐
本章介紹如何在Linux 系統下使用Tomcate+Java+Sqlserver對托管應用進行部署
準備工作
安裝Docker環境。您可以直接訪問Docker官網獲取更多信息。
Linux客戶端安裝:目前在Linux系統上安裝Docker,對系統版本有以下要求:
CentOS:7 Debian:7.7(Wheezy LTS)、8.0(Jessie LTS)、9(Stretch) Fedora:24、25 Ubuntu:16.04(Xenial LTS)、14.04(Trusty LTS)、17.04(Zesty) 您可以通過阿里云的Docker CE 鏡像源站進行安裝。
打包自研節點鏡像。
編寫dockerfile文件
# step 1: 以ubuntu:16.04作為基礎鏡像 FROM ubuntu:16.04 # step 2: 安裝jdk8 RUN apt-get update && apt-get install -y openjdk-8-jdk # step 3: 安裝sqlcmd環境 RUN apt-get update && apt-get install -y \ curl apt-transport-https debconf-utils \ && rm -rf /var/lib/apt/lists/* RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - RUN curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list RUN apt-get update && ACCEPT_EULA=Y apt-get install -y msodbcsql mssql-tools RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc RUN /bin/bash -c "source ~/.bashrc" # step 4:安裝中文顯示環境,在終端操作時,確保能正確的顯示中文內容 RUN apt-get update && apt-get install -y locales ENV LANG C.UTF-8 # step 5: 因sqlcmd限制,需要配置終端環境使用en_US.UTF-8 RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && locale-gen # step 6: 復制自有應用 COPY test.jar /test.jar ENTRYPOINT ["/bin/bash","-c","java -jar /test.jar --server.port=8081"]
將需要部署的應用jar包放在Dockerfile文件同一個目錄下。
執行命令進行鏡像構建: docker build -t javademo:v1 .注:javademo為鏡像名稱,v1為鏡像版本號。執行命令查看鏡像:
docker images
打包初始化節點鏡像
編寫dockerfile文件
# step 1: 以ubuntu:16.04作為基礎鏡像 FROM ubuntu:16.04 # step 2: 安裝sqlcmd RUN apt-get update && apt-get install -y \ curl apt-transport-https debconf-utils \ && rm -rf /var/lib/apt/lists/* RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - RUN curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list RUN apt-get update && ACCEPT_EULA=Y apt-get install -y msodbcsql mssql-tools # step 3: 設置sqlcmd的path RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc RUN /bin/bash -c "source ~/.bashrc" # step 4: 安裝中文顯示環境,在終端操作時,確保能正確的顯示中文內容 RUN apt-get update && apt-get install -y locales ENV LANG C.UTF-8 # step 5: 因sqlcmd限制,需要配置終端環境使用en_US.UTF-8 RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && locale-gen # step 6: copy數據庫腳本 COPY db.sql /db.sql COPY init.sh /init.sh RUN chmod +x /init.sh ENTRYPOINT ["/bin/bash", "/init.sh"]
將需要部署的db.sql與init.sh放在Dockerfile文件同一個目錄下。
執行命令進行鏡像構建: docker build -t javademo:v2 .注:javademo為鏡像名稱,v2為鏡像版本號。執行命令查看鏡像:
docker images
創建數據庫初始化的sql文件。
/******************************************/ /* 創建user數據表,并插入兩條初始化數據 */ /******************************************/ CREATE DATABASE demoDB GO CREATE TABLE [demoDB].[dbo].[user] ( [id] bigint NOT NULL , [gmt_create] datetime NOT NULL , [gmt_modified] datetime NOT NULL , [name] nvarchar(50) NOT NULL , [phone] nvarchar(50) NOT NULL ) ON [PRIMARY] GO ALTER TABLE [demoDB].[dbo].[user] ADD CONSTRAINT [PK_user] PRIMARY KEY CLUSTERED ( [id] ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) GO INSERT INTO [demoDB].[dbo].[user] (id, gmt_create, gmt_modified, name, phone) VALUES ('1', '2018-11-26 10:00:00', '2018-11-26 10:00:00', N'測試', N'1388888888'); INSERT INTO [demoDB].[dbo].[user] (id, gmt_create, gmt_modified, name, phone) VALUES ('2', '2018-11-26 10:00:00', '2018-11-26 10:00:00', N'test', N'1366666666'); GO
5.創建用于容器初始化的運行腳本init.sh。
#!/bin/bash --login function prop() { env|grep "${1}"|cut -d'=' -f2 } #從容器中的環境變量獲取SQLServer訪問參數 USER=$(prop 'iot\.hosting\.testdb\.mssqlUser') PASSWORD=$(prop 'iot\.hosting\.testdb\.mssqlPassword') HOSTNAME_FULL=$(prop 'iot\.hosting\.testdb\.mssqlUrl') HOSTNAME_TEMP=${HOSTNAME_FULL#jdbc:sqlserver://} HOSTNAME=${HOSTNAME_TEMP%:*}",1433" #使用數據庫初始化sql文件初始化數據庫 /opt/mssql-tools/bin/sqlcmd -S ${HOSTNAME} -U ${USER} -P ${PASSWORD} -i db.sql -o db_execution.log
6.測試的Demo地址為:Tomcat+Java+MySQL
操作步驟
登錄物聯網平臺控制臺。
在左側導航欄選擇
應用托管
>鏡像管理
。將打包完成的鏡像文件上傳至阿里云,具體操作您可以參照鏡像倉庫。在左側導欄選擇
應用托管
>應用配置
。具體操作您可以參照應用配置。在應用配置中拉入初始化節點,并選擇該鏡像。當節點部署時,與其相連接的節點的輸出屬性,會注入該初始化節點的環境變量中,方便初始化節點訪問。腳本中SQL Server訪問信息對應的環境變量中動態內容,需要與init.sh部署節點的設置保持一致,testdb為節點配置中的服務名稱,同時SQL Server節點輸出的數據都將放在自研節點的環境變量中。在左側導航欄選擇
應用托管
>應用管理
。在配置名稱的右側,單擊
管理
,進入應用管理頁面
,在節點列表
中可查看部署的所有節點狀態,單擊外部端口
,將進入到您部署的應用中。