<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 部署所需 * java環境 * mysql數據庫 * redis服務 * docker服務 * docker鏡像庫 * nacos服務 (參考地址:[https://github.com/nacos-group/nacos-docker](https://github.com/nacos-group/nacos-docker)) (需要修改官網的docker-compose將network設置成與JPower的docker-compose設置的一致) ## Harbor部署前準備 * Harbor創建一個新的項目,命名為: jpower 。 ![](https://img.kancloud.cn/ad/d2/add21ed5d2572cc46105769213a6019a_1388x768.png) * Harbor再新建一個對應的 jpower 賬號,分配好角色用于接受推送過來的鏡像。 ![](https://img.kancloud.cn/53/f5/53f5df91f0023ebc1922d3c8f8d4c756_1090x748.png) ## 使用docker構建工程步驟 1. 使用harbor作為私有庫,需要配置maven,找到setting.xml(linux可以使用find / -name settings.xml )加入以下配置 ``` <servers> <server> <id>192.168.0.3</id> <username>admin</username> <password>Harbor12345</password> <configuration> <email>ding931226@yeah.net</email> </configuration> </server> </servers> <pluginGroups> <pluginGroup>com.spotify</pluginGroup> </pluginGroups> ``` 2. docker開啟遠程訪問 如果沒有遠程訪問,會報 ``` Connect to 192.168.0.3:2375 [/192.168.0.3] failed: Connection refused: connect ``` 在 /usr/lib/systemd/system/docker.service ,配置遠程訪問。主要是在[Service]這個部分,在harbor服務器,加上下面兩個參數: ``` [root@localhost harbor]# vi /lib/systemd/system/docker.service ExecStart= ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock ``` 3. 配置http訪問 因為docker1.3.2版本開始默認docker registry使用的是https,我們設置Harbor默認http方式,所以當執行用docker login、pull、push等命令操作非https的docker regsitry的時就會報錯。 解決辦法:在服務器與開發機配置 /etc/docker/daemon.json ``` [root@localhost harbor]# vi /etc/docker/daemon.json { "registry-mirrors": ["https://3dse7md.mirror.aliyuncs.com"] } ``` 將其修改為: ``` { "registry-mirrors": ["https://3dse7md.mirror.aliyuncs.com"], "insecure-registries":["192.168.0.3"] } ``` 4. 修改maven配置 * 在項目根目錄的pom.xml文件下,修改如下配置 ~~~ <docker.image.prefix>jpower</docker.image.prefix> <docker.registry>219.148.186.235:99</docker.registry> ~~~ 將其修改為: ~~~ <docker.image.prefix>jpower</docker.image.prefix> <docker.registry>192.168.0.3</docker.registry> ~~~ * 在每個需要構建子項目的pom.xml下加入配置,內容可參考如下 ~~~ <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <configuration> <skip>false</skip> </configuration> </plugin> ~~~ 5. 在每個需要構建子項目的根目錄下加入Dockerfile,內容可參考如下 ~~~ FROM openjdk:8-jre MAINTAINER ding RUN mkdir -p /jpower/gateway \ && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo "Asia/Shanghai" > /etc/timezone WORKDIR /jpower/gateway ENV SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 \ SW_AGENT_NAME=jpower-gateway EXPOSE 80 ADD ./target/jpower-gateway-exec.jar ./app.jar ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"] CMD ["--spring.profiles.active=test"] ~~~ 6. 在工程/script/app/目錄的docker-compose.yml下加入配置,內容可參考如下 ~~~ jpower-gateway: image: "192.168.0.3/jpower/gateway-server:1.0.1-SNAPSHOT" privileged: true restart: always networks: jpower_net: ipv4_address: 172.16.238.25 ~~~ 7. 推送項目到harbor * 在項目根目錄下執行命令`mvn clean package dockerfile:build dockerfile:push` 等待推送完畢 * 推送日志如下 ![](https://img.kancloud.cn/80/4e/804e847f5e100b0b510f3d2df9e2736a_3232x1320.png) * 登錄harbor查看docker鏡像已經推送成功 ![](https://img.kancloud.cn/30/10/3010c527478f29db0ed2aaa2661db33a_3610x1358.png) * 點擊進入jpower/gateway-server可以看到詳細信息 ![](https://img.kancloud.cn/a9/a6/a9a6989a77337468548f1151621590f7_3610x1578.png) ## 配置web服務以及網關反向代理 1. 我們先看下nginx的配置文件內容,畫出重點。nginx配置文件在項目根目錄/script/docker/nginx/jpower/文件夾下 ![](https://img.kancloud.cn/c1/23/c1238e1bd8a3b181d1734907c1a104ac_706x556.png) ![](https://img.kancloud.cn/80/6e/806e39e8b1d87e595e996e05d60ab246_1750x1422.png) * 配置了gateway這個服務的反向代理 * 其中gateway分配為81端口 * 查看/script/app/docker-compose.yml指定了80端口的gateway(這里docker-compose不用映射端口,因為nginx和gateway在同一docker網段內,通過指定IP就可以訪問,端口未服務啟動的端口),與nginx的配置文件一致 ![](https://img.kancloud.cn/e9/e5/e9e5c7090830aa05bbb59432bf1d7b49_2802x604.png) ![](https://img.kancloud.cn/7d/69/7d69f8e97964f5caa8ab8822e8e4c0b7_1836x840.png) * nginx端口設置為81,那么只要宿主機放開81端口,同時映射到外網,那么對應的 http://宿主機ip:81 就是反向代理后的網關地址了,在這基礎上進行域名綁定相信對于大家也不是什么難事。 ![](https://img.kancloud.cn/77/6f/776f4c44e6e1a4d6505a6445efddb73d_1362x608.png) ## 使用docker-compose啟動服務 * 若有新的服務,需要在工程根目錄/script/app/docker-compose.yml下加入配置,內容可參考如下 ~~~ jpower-auth: image: "192.168.0.3/jpower/auth-server:1.0.1-SNAPSHOT" privileged: true volumes: # skywalking指針得目錄,需要映射到容器,如果skywalking指針得目錄在宿主機上得位置改變了這里也需要修改 - /docker/skywalking/agent/:/jpower/skywalking/agent/ environment: - JAVA_TOOL_OPTIONS=-javaagent:/jpower/skywalking/agent/skywalking-agent.jar - SW_AGENT_COLLECTOR_BACKEND_SERVICES=skywalking-oap:11800 restart: always networks: - jpower_net ~~~ * 配置好腳本集后,將下圖文件拷貝至服務器任意文件夾 ![](https://img.kancloud.cn/92/05/9205d495c1efbba6f72e624e16373f08_656x516.png) * 將下圖文件夾拷貝到服務器的根目錄 ![](https://img.kancloud.cn/b6/02/b60277eaee8dfa1ae2107de9e55ed78a_746x786.png) * 進入app目錄,給 deploy.sh 賦予執行權限 chmod 744 deploy.sh * 執行部署之前需要先部署好elk,部署elk請參考[ELK分布式日志追蹤系統](./ELK分布式日志追蹤系統.md) * 如果ELK和服務部署不在一個服務器,需修改docker-compose.yml文件中以下內容為ELK服務地址 ![](https://img.kancloud.cn/d2/f6/d2f6923d4ecc9f0a792301ca5010bcaf_1442x810.png) * 進入app目錄后依次執行: 1. `./deploy.sh bash`啟動基礎支撐服務(執行該命令先請先啟動ELK); 這里會把nginx、nacos、sentinel、seata、skywalking、jpower-admin全部啟動 2. `./deploy.sh core` 啟動業務模塊 * 再次執行 `docker ps` 查看已啟動的docker服務,發現服務都已啟動成功 ![](https://img.kancloud.cn/aa/23/aa239fb9feda059ce829fa456005bc90_3186x646.png) * 若都成功則打開nacos界面查看對應部署的服務 * 打開聚合文檔地址(http://宿主機ip:81/doc.html)查看接口調用,網關地址為之前配置好的nginx對網關的反向代理地址(http://宿主機ip:81) * 發現調用都沒有問題,基于docker的部署已經成功
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看