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)

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