SpringBoot实战-Guns项目(发布到docker) 前言 Docker概述 项目打包 备注 参考

前言

  1. 用自己搭建的git服务器创建一个guns.git仓库,把代码上传到git服务器中,

  2. 在服务器root用户,把公钥上传到git服务器,同时为root用户授权,这样root用户就可以直接拉取代码了

  3. 在/data/www/ git clone [email protected]:repo/guns.git

Docker概述

  1. 常用命令

    1. docker run 运行一个container

    2. docker ps 列出运行的container

    3. docker build 创建image

    4. docker pull 从Docker-Hub下载image

    5. docker images 列出已经下载的images

    6. docker rm 删除 container

    7. docker commit 保存改动为新的image

    8. docker cp在host与container拷贝文件

    9. docker rmi 删除image

  2. dockfile

    1. FROM 依赖(继承)的image

    2. ADD 相当于cp,把资源复制到容器里,可以依赖于远程资源

    3. ENTRYPOINT 相当于CMD,是一个数组,参数,执行入口

    4. VOLUME 卷

    5. RUN 在容器执行命令

    6. CMD 执行命令

    7. EXPOSE 暴露端口

    8. ENV 设置环境变量

    9. USER 指定用户

    10. MAINTAINER 维护者

    11. WORKDIR 指定路径

  3. volume

  4. 运行

1. docker run -d —name nginx /usr/share/nginx/html nginx   启动name为nginx的nginx image

2. docker inspect nginx  //获取nginx container的信息 

"Mounts": [

            {

                "Type": "volume",

                "Name": "7fd5bc5f4cf838688e39708685071601d892098fb4c8df08aa01819c47c45e7f",

                "Source": "/var/lib/docker/volumes/7fd5bc5f4cf838688e39708685071601d892098fb4c8df08aa01819c47c45e7f/_data",

                "Destination": "/usr/share/nginx/html",

                "Driver": "local",

                "Mode": "",

                "RW": true,

                "Propagation": ""

            }

        ]

这个目录(/var/lib/docker/volumes/7fd5bc5f4cf838688e39708685071601d892098fb4c8df08aa01819c47c45e7f/_data",)如果是mac没有该路径,需要screen 路径加上tty linux不需要 

3. 直接在nginx里面对index.html进行修改

4. nginx exec -it nginx /bin/bash 进到容器去看(如果容器没有运行 可以通过nginx start #id来运行)

4. 查看得到/usr/share/nginx/html容器里面的文件也被更改
1.  docker run -p 8010:80 -d -v $PWD/html:/usr/share/nginx/html/ nginx    外部操作直接影响内部容器       

  2.  docker run -volumes-from  外部变化共享多个容器
  1. responsity仓库

  2. docker-compose 多容器应用

  3. 安装docker

    1. yum install docker

    2. service docker start

    3. systemctl start docker.service

    4. systemctl enable docker.service

    5. 使用Docker中国加速器

vi  /etc/docker/daemon.json

#添加后:

{

    "registry-mirrors": ["https://registry.docker-cn.com"],

    "live-restore": true

}
  1. systemctl restart docker 重启docker

  2. docker version 返回版本信息 正常安装

JDK安装

  1. 之前安装了java环境,执行java命令有返回,执行java -version没返回

  2. 设置/ect/profile JAVA_HOME 为=/usr/lib/jvm/java8-openjdk

  3. 修改之后 source /etc/profile使之生效

  4. java -version有返回

springboot项目设置

  1. 在pom.xml properties设置镜像名称
<properties>

        <docker.image.prefix>springboot</docker.image.prefix>

</properties>
  1. 添加docker插件
<!-- Docker maven plugin -->

                <plugin>

                        <groupId>com.spotify</groupId>

                        <artifactId>docker-maven-plugin</artifactId>

                        <version>1.0.0</version>

                        <configuration>

                                <imageName>${docker.image.prefix}/${project.artifactId}</imageName>

                                <dockerDirectory>src/main/docker</dockerDirectory>

                                <resources>

                                        <resource>

                                                <targetPath>/</targetPath>

                                                <directory>${project.build.directory}</directory>

                                                <include>${project.build.finalName}.jar</include>

                                        </resource>

                                </resources>

                        </configuration>

                </plugin>

                <!-- Docker maven plugin -->
  1. 在目录src/main/docker穿件Dockerfile文件,内容为
FROM openjdk:8-jdk-alpine

VOLUME /tmp

ADD guns.jar app.jar

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

项目打包

  1. mvn clean package -Dmaven.test.skip=true打包,会自动下载依赖,比较耗时(去掉测试类,mvn package测试类会报错)

  2. java -jar /target/guns.jar 运行

  3. mvn clean package -Dmaven.test.skip=true docker:build(mvn package docker:build)构建

  4. 构建成功之后docker images 查看已经构建好的镜像

[root@tmlong guns]# docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

springboot/guns     latest              41a2a2259acf        28 minutes ago      183 MB

docker.io/openjdk   8-jdk-alpine        a3562aa0b991        3 months ago        105 MB
  1. docker run -p 8090:8090 -t springboot/guns 运行镜像

  2. docker ps 查看正在运行的镜像

ONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES

6076ae4e407d        springboot/guns     "java -Djava.secur..."   28 minutes ago      Up 28 minutes       0.0.0.0:8090->8090/tcp   thirsty_mcnulty
  1. 可以正常访问了

备注

  1. centos服务器 root git clone 没有权限,需要ssh-add ~/.ssh/git_root(报Could not open a connection to your authentication agent则 eval ssh-agent -s)

2.No chain/target/match by that name,需要重启docker参考地址

参考

  1. http://www.ityouknow.com/springboot/2018/03/19/spring-boot-docker.html(完整教程)

  2. https://stackoverflow.com/questions/17846529/could-not-open-a-connection-to-your-authentication-agent(ssh-add)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章