部署Java项目到Docker容器

如需使用另一个容器里的mysql,需要参数 —link mysql1:mysql,其中mysql1是mysql容器的名称

方法一: 用maven插件部署

查找tomcat镜像

docker search tomcat

新建tomcat-users.xml

vim tomcat-users.xml

<tomcat-users>
  <role rolename="admin-gui"/>
  <role rolename="admin-script"/>
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <role rolename="manager-jmx"/>
  <role rolename="manager-status"/>
  <user username="tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-script,admin-gui"/>
</tomcat-users>

新建Dockerfile

vim  Dockerfile

FROM tomcat:8-jre8
MAINTAINER "baocheng.chen <xxxxxx@xxxxxxxx.xxx>"
ADD tomcat-users.xml /usr/local/tomcat/conf/

构建新的镜像

docker build -t tomcat8-java8-cbc:demo .

创建容器

docker run -it --rm -p 8090:8080 --link mysql1:mysql tomcat8-java8:demo

修改pom文件

vim pom.xml

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <url>http://192.168.1.100:8090/manager/text</url>
                <server>TomcatServer</server>
                <path>/</path>
                <username>tomcat</username>
                <password>tomcat</password>
            </configuration>
        </plugin>
    </plugins>
</build>

执行部署

mvn tomcat7:deploy

如果使用 Intellij Idea 直接在右侧Plugins里双击deploy就可以了。

这种方法缺点是每次重启容器后需要重新deploy。

方法二:向容器volume里复制war包

启动容器

docker run -it --rm -p 8091:8080 --link mysql1:mysql -v /ROOT/www/www.ibm.com:/usr/local/tomcat/webapps tomcat:8-jre8

复制war包

scp ROOT.war root@宿主机IP:/ROOT/www/www.demo.com/

缺点需要手动发包,优点是重启容器后,不需要重新deploy