更新时间:2019-04-19 00:12
本章介绍如何在Linux 系统下使用Tomcate+Java+Sqlserver对托管应用进行部署
安装Docker环境。
您可以直接访问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 镜像源站进行安装。
打包自研节点镜像。
# 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"]
docker images
打包初始化节点镜像
# 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"]
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
操作步骤
应用托管
>镜像管理
。将打包完成的镜像文件上传至阿里云,具体操作您可以参照镜像仓库。应用托管
>应用配置
。具体操作您可以参照应用配置。应用托管
>应用管理
。管理
,进入应用管理页面
,在节点列表
中可查看部署的所有节点状态,单击外部端口
,将进入到您部署的应用中。
在文档使用中是否遇到以下问题
更多建议
匿名提交