
# Docker上部署ABI
1. 制作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.abi.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-7.0.76.tar.gz /usr/local
   RUN mv jdk1.8.0_131 java && mv apache-tomcat-7.0.76 tomcat
   COPY abi.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-7.0.76.tar.gz、abi.war、Dockerfile这几个均放在同一路径下。
   
2. 构建镜像
   1. 使用当前目录的 Dockerfile 创建镜像 docker build -t abi:v1 .
      -t：镜像的名字及标签
      
   
   2. 通过 -f Dockerfile 文件的位置 docker build -f /opt/Dockerfile -t abi:v1 .
      上下文路径 ，是指 docker 在构建镜像，有时候想要使用到本机的文件（比如复制），docker build 命令得知这个路径后，会将路径下的所有内容打包。
      ```
      Successfully built 5d113977d755
      Successfully tagged abi:v1
      ```
      构建过程最后出现上面显示，即代表镜像构建成功。
      
    
3. 启动容器 docker run -d -p 6060:8080 -v /opt/workdir/:/usr/local/workdir abi:v1
   -d：服务形式启动
   -p：端口映射，宿主机6060端口：docker容器8080端口，6060可随意修改成未被占用的端口
   -v：工作目录路径，宿主机/opt/workdir：容器/usr/local/workdir
   
4. 访问服务器 访问地址：http://ip:6060/abi，ip为宿主机ip地址，6060为宿主机映射的端口，abi为war包名称，根据实际修改。
   
5. 工作目录及注册说明 制作Dockerfile时，环境变量中的-Desen.abi.workdir=/usr/local/workdir是用来设置容器内部的产品工作目录，启动时再把工作目录映射到宿主机上。
   注册时通过注册界面导入注册申请文件，不要直接把注册申请文件放在宿主机工作目录下。
   
6. 相关问题 报错无法获取服务器硬件信息，此问题是由于产品在注册时需要获取ip及mac地址，但是容器内部没有相关命令，须在构建镜像时加上一行RUN yum install -y net-tools dmidecode
   
 
