
# Docker上部署睿码平台
#### 制作Dockerfile
Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。可以参照以下方式制作Dockerfile。
```
FROM centos:7
ENV JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8 -Xmx2048m -Xms256m -XX:MaxMetaspaceSize=512m -XX:MetaspaceSize=256m -Duser.timezone=Asia/Shanghai
-Desen.mdm.workdir=/usr/local/workdir -Djava.awt.headless=true"
ENV JAVA_HOME /usr/local/java
ENV JRE_HOME /usr/local/java/jre
ENV PATH /usr/local/java/bin:$PATH
WORKDIR /usr/local/
ADD jdk-8u131-linux-x64.tar.gz /usr/local
ADD apache-tomcat-8.5.12.tar.gz /usr/local
RUN mv jdk1.8.0_131 java && mv apache-tomcat-8.5.12 tomcat
COPY mdm.war /usr/local/tomcat/webapps
EXPOSE 6060
ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh","run"]
```
![](https://support.huaweicloud.com/edms-mnft/public_sys-resources/note_3.0-zh-cn.png)
**jdk-8u131-linux-x64.tar.gz、apache-tomcat-8.5.12.tar.gz、mdm.war、Dockerfile这几个均放在同一路径下。**
#### 构建镜像
1. 使用当前目录的 Dockerfile 创建镜像
   ```
   docker build -t mdm:v1 .
   ```
   -t：镜像的名字及标签
   
2. 通过 -f Dockerfile 文件的位置
   ```
   docker build -f /opt/Dockerfile -t mdm:v1 .
   ```
   
上下文路径 ，是指 docker 在构建镜像，有时候想要使用到本机的文件（比如复制），docker build 命令得知这个路径后，会将路径下的所有内容打包。
```
Successfully built 5d113977d755
Successfully tagged mdm:v1
```
构建过程最后出现上面显示，即代表镜像构建成功。
#### 启动容器
```
docker run -d -p 6060:8080 -v /opt/mdmworkdir/:/usr/local/workdir mdm:v1
```
-d 服务形式启动
-p 端口映射，宿主机6060端口：docker容器8080端口，6060可随意修改成未被占用的端口
-v 工作目录路径,宿主机/opt/mdmworkdir：容器/usr/local/workdir
#### 访问服务器
访问地址：http://ip:6060/mdm，ip为宿主机ip地址，6060为宿主机映射的端口，mdm为war包名称，根据实际修改。
#### 工作目录及注册说明
制作Dockerfile时，环境变量中的-Desen.mdm.workdir=/usr/local/workdir是用来设置容器内部的产品工作目录，启动时再把工作目录映射到宿主机上。
注册时通过注册界面导入注册申请文件，不要直接把注册申请文件放在宿主机工作目录下。
#### 相关问题
报错无法获取服务器硬件信息，此问题是由于产品在注册时需要获取硬件信息，但是容器内部没有相关命令，须在构建镜像时加上一行RUN yum install -y net-tools dmidecode
