zoukankan      html  css  js  c++  java
  • Idea连接服务器docker并部署代码到docker实现一键启动

    好记性不如烂笔头,写笔记是为了回头看的。

    谁要是不小心搜了看了,如有不足之处敬请谅解。

    一、准备工作

    虚拟机centos7.X,docker1.3.XWin10 Idea2018.1

    默认Idea已经下载了Docker插件

    默认虚拟机docker已经装了jdk

    二、开始

    1. 打开docker配置文件(docker把端口号2375开放,下面两种方法都不够安全,但是测试用用还可以,正式的就不行。)

    [root@huangsz ~]# vim /usr/lib/systemd/system/docker.service

    ExecStart=/usr/bin/dockerd-current 后面加上

    -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

    如下图所示:

     

    或者

    修改一下内容:

    [root@huangsz ~]# vim /etc/sysconfig/docker

    2. 重新加载配置文件,重启docker

    systemctl daemon-reload

    systemctl start docker

    3. 查看进程

    netstat -tulp

    PS:Centos7没有netstat,所以要先下载。

    yum install net-tools

    4. 防火墙开放2375端口号

    [root@huangsz ~]# firewall-cmd --zone=public --add-port=2375/tcp --permanent

    重启防火墙

    [root@huangsz ~]# firewall-cmd --reload

    -------------------------- 分割线 割割割割割割割-----------------

    Idea连接虚拟机docker

    打开小扳手(setting)找到docker,输入虚拟机ip,不出意外会连接成功的。

    5. Springboot项目添加docker-maven-plugin插件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <!--使用docker-maven-plugin插件-->
    <plugin>
        <groupId>com.spotify</groupId>
        <artifactId>docker-maven-plugin</artifactId>
        <version>1.0.0</version>
     
        <!--将插件绑定在某个phase执行-->
        <executions>
            <execution>
                <id>build-image</id>
                <!--将插件绑定在package这个phase上。也就是说,用户只需执行mvn package ,就会自动执行mvn docker:build-->
                <phase>package</phase>
                <goals>
                    <goal>build</goal>
                </goals>
            </execution>
        </executions>
     
        <configuration>
            <!--指定生成的镜像名-->
            <imageName>hsz1992/${project.artifactId}</imageName>
            <!--指定标签-->
            <imageTags>
                <imageTag>latest</imageTag>
            </imageTags>
            <!-- 指定 Dockerfile 路径-->
            <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
     
            <!--指定远程 docker api地址-->
            <dockerHost>http://192.168.159.130:2375</dockerHost>
     
            <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
            <resources>
                <resource>
                    <targetPath>/</targetPath>
                    <!--jar 包所在的路径  此处配置的 即对应 target 目录-->
                    <directory>${project.build.directory}</directory>
                    <!-- 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 -->
                    <include>${project.build.finalName}.jar</include>
                </resource>
            </resources>
        </configuration>
    </plugin>

    6.  创建docker文件夹和Dockerfile文件,docker要在src/main里

     

    Dockerfile的内容

    1
    2
    3
    4
    5
    6
    FROM java:8
    VOLUME /tmp
    ADD test-mybatis-0.0.1-SNAPSHOT.jar app.jar
    RUN bash -c 'touch /app.jar'
    EXPOSE 8082
    ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar" ]

    FROM:选择的jdk

    EXPOSE 是端口号和server.port=8082一致

    ADD:第一个jar是打包的项目名 第二个是别名

    7.idea的右边找到Maven Projects,找到Lifecycle,双击package打包,第一次打包比较慢,需要骚骚的等等。

    看到以下就说明成功了

    8. 创建容器,找到刚刚生成的镜像,点击创建容器

     

    Image ID 是打包生成的那个镜像

    Container name 容器名字随便取

    Bind ports 8080docker对外开放的端口,8082是项目端口(个人理解)

     9. 设置好后,启动容器,启动成功后去虚拟机查看是否启动成功

    可以看到,容器启动成功。

    10.访问虚拟机ip+端口号

    http://192.168.159.130:8080/test

    能访问,8080是设置容器时对外开放的端口号,而项目的端口是8082

    11. Docker查看正在启动容器docker ps,查看所有容器 docker ps -a,查看镜像docker images

    12.以上步骤就把springboot通过docker远程部署在虚拟机的docker里了。但是有一个问题我没有解决,就是每次打包后,需要把容器删除后再启动容器才能起作用。如果不删容器直接启动的话,还是原来的内容。

    13. 查看日志,docker logs -f -t --tail 行数 容器id或者容器名

    [root@huangsz ~]#  docker logs -f -t --tail 50 499189e519a0

     

    原文地址:https://www.cnblogs.com/hsz-csy/p/9488469.html

  • 相关阅读:
    React在componentDidMount里面发送请求
    React 术语词汇表
    React里受控与非受控组件
    React和Vue等框架什么时候操作DOM
    【LeetCode】79. Word Search
    【LeetCode】91. Decode Ways
    【LeetCode】80. Remove Duplicates from Sorted Array II (2 solutions)
    【LeetCode】1. Two Sum
    【LeetCode】141. Linked List Cycle (2 solutions)
    【LeetCode】120. Triangle (3 solutions)
  • 原文地址:https://www.cnblogs.com/jpfss/p/11276427.html
Copyright © 2011-2022 走看看