二十九、Docker(5)-創(chuàng)新互聯(lián)

🌻🌻 目錄
  • 一、Maven Docker 插件構建 Docker 鏡像
    • 1.1 maven Docker 插件構建 Docker 鏡像入門
    • 1.2 maven Docker 插件構建 Docker 鏡像,自定義 DockerFile
    • 1.3 maven Docker 插件構建并推送鏡像到 Docker 私有倉庫
  • 二、手動發(fā)布部署微服務項目到 Docker
    • 2.1 項目工程發(fā)布鏡像規(guī)劃
    • 2.2 項目工程發(fā)布鏡像配置
      • 2.2.1 項目 EurekaServer01
      • 2.2.2 創(chuàng)建docker網(wǎng)絡
      • 2.2.3 項目 ConfigServer001
      • 2.2.4 數(shù)據(jù)庫的創(chuàng)建
      • 2.2.5 項目ZuulGateWay
      • 2.2.6 項目UserProvdier01
      • 2.2.7 項目 UserWeb06
    • 2.3 編譯工程創(chuàng)建鏡像(對上面的總結)
    • 2.4 搭建實際運行項目

創(chuàng)新互聯(lián)于2013年創(chuàng)立,先為德興等服務建站,德興等地企業(yè),進行企業(yè)商務咨詢服務。為德興企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。一、Maven Docker 插件構建 Docker 鏡像

首先:啟動上節(jié)使用的兩臺服務器(啟動docker和啟動游戲)

在這里插入圖片描述

然后:導入上一節(jié)的springcloud案例項目 a-parent-project

開始這節(jié)的總結啦啦啦~~~

Maven是一個強大的項目管理與構建工具。可以使用Maven構建Docker鏡像,那么我們的工作能得到進一步的簡化。

1.1 maven Docker 插件構建 Docker 鏡像入門

第一步:修改項目EurekaServer01pom.xml

com.spotifydocker-maven-plugin0.4.13zql/microservice-discovery-eureka:0.0.1java:8["java", "-jar", "/${project.build.finalName}.jar"]  / ${project.build.directory} ${project.build.finalName}.jar 

在這里插入圖片描述

也可以下載 插件地址

第二步:在linux宿主機的/usr/local下面創(chuàng)建java-project,并且把項目文件(如下圖,父項目下的所有)上傳到linux宿主機目錄/usr/local/java-project,如下:

步驟一:

在這里插入圖片描述

步驟二:項目路徑查看:

在這里插入圖片描述

步驟三:

在這里插入圖片描述

步驟四:

在這里插入圖片描述

第三步:下載并上傳 jdk、maven 的安裝包到linux服務器

  • jdk-8u131-linux-x64.tar.gz
  • apache-maven-3.6.0-bin.tar.gz

在這里插入圖片描述

解壓并重命名:

在這里插入圖片描述

第四步:安裝jdk

tar xvf jdk-8u131-linux-x64.tar.gz  -C /usr/local/
cd /usr/local
mv jdk1.8.0_131  jdk
vi /etc/profile

在這里插入圖片描述

#在最后添加
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH


#重新加載配置文件
source /etc/profile

#測試jdk是否安裝成
java -version

在這里插入圖片描述

在這里插入圖片描述

第五步:安裝maven

tar xvf apache-maven-3.6.0-bin.tar.gz  -C /usr/local/
cd /usr/local
mv apache-maven-3.6.0 maven
vi /etc/profile
#在最后添加
export MAVEN_HOME=/usr/local/maven
export PATH=$MAVEN_HOME/bin:$PATH
#重新加載配置文件
source /etc/profile
#測試maven安裝
mvn -v

解壓縮:
在這里插入圖片描述

解壓并重命名:

在這里插入圖片描述

拷貝maven目錄,方便下面使用:

在這里插入圖片描述

添加配置文件和驗證是否成功安裝

在這里插入圖片描述

配置maven加速器,我使用了華為的

在這里插入圖片描述

編輯配置加速器

在這里插入圖片描述

huaweicloud*https://mirrors.huaweicloud.com/repository/maven/  

然后刷新項目

在這里插入圖片描述

第六步:編譯構建項目
切換到測試JAVA項目目錄

cd /usr/local/EurekaServer

在這里插入圖片描述

執(zhí)行編譯指令:

mvn clean package docker:build   #這個命令不行就執(zhí)行下面一個,都一樣
mvn clean -Dmaven.test.skip=true package docker:build  

在這里插入圖片描述

我們會發(fā)現(xiàn)終端輸出類似于如下的內(nèi)容:

在這里插入圖片描述

第七步:查看鏡像
執(zhí)行命令:

docker images

在這里插入圖片描述

第八步:使用鏡像創(chuàng)建運行容器

docker run -di --name e1 -p 10086:10086 zql/microservice-discovery-eureka:0.0.1

在這里插入圖片描述

查看日志

docker logs e1

在這里插入圖片描述

第九步:訪問測試http://192.168.188.181:10086/

在這里插入圖片描述

1.2 maven Docker 插件構建 Docker 鏡像,自定義 DockerFile

上面的示例,我們直接在pom.xml中設置了一些構建的參數(shù)。很多場景下,我們希望使用Dockerfile更精確、有可讀性地構建鏡像。

下面我們帶領大家看一下如何使用Dockerfile基于Maven插件構建鏡像。

第一步:首先我們在項目的src/main/docker目錄下,新建一個Dockerfile文件

在idea中新建文件,文件出現(xiàn)問號,打不開解決

# 基于哪個鏡像
FROM java:8
# 拷貝文件到容器,也可以直接寫成ADD xxxxx.jar /app.jar
ADD EurekaServer01-1.0.jar /app.jar
# 聲明需要暴露的端口
EXPOSE 8888
# 配置容器啟動后執(zhí)行的命令
CMD ["java","-jar","/app.jar"]

在這里插入圖片描述

第二步:修改pom.xml,修改maven Docker插件,變動地方看下截圖

org.springframework.bootspring-boot-maven-plugincom.spotifydocker-maven-plugin0.4.13  zql/microservice-discovery-eureka:0.0.1 ${project.basedir}/src/main/docker       / ${project.build.directory} ${project.build.finalName}.jar  

在這里插入圖片描述

刪除之前構建的一些容器和鏡像

在這里插入圖片描述

第三步:上傳到linux服務器重新執(zhí)行編譯構建,即可根據(jù)Dockerfile生成鏡像

在這里插入圖片描述

切換到測試JAVA項目目錄

cd /usr/local/EurekaServer01

執(zhí)行編譯構建指令:

mvn clean package docker:build  #這個命令不行就執(zhí)行下面一個,都一樣
mvn clean -Dmaven.test.skip=true package docker:build

構建出現(xiàn)問題解決

在這里插入圖片描述

瀏覽器進一步驗證:http://192.168.188.181:10086/

在這里插入圖片描述

1.3 maven Docker 插件構建并推送鏡像到 Docker 私有倉庫

前文我們使用docker push 命令實現(xiàn)了鏡像的推送,我們也可使用Maven插件推送鏡像。我們不妨使用Maven插件推送一個Docker鏡像到Docker 私有倉庫。

第一步:修改Maven的全局配置文件setttings.xml

  • 在其中添加以下內(nèi)容,配置Docker私有倉庫的用戶信息。
cd /usr/local/maven/conf/

vi settings.xml

在這里插入圖片描述

docker-hubadminadmin123wmsspark@163.com

在這里插入圖片描述

第二步:修改項目EurekaServer01的pom.xml

	com.spotify	docker-maven-plugin	0.4.13			192.168.188.181:8086/microservice-discovery-eureka:0.0.2		${project.basedir}/src/main/docker		/${project.build.directory}${project.build.finalName}.jar		docker-hub	

在這里插入圖片描述

serverId:必須和maven配置文件設置的server 節(jié)點的id一致

  • idea中做了更改后再次需要上傳

在這里插入圖片描述

第三步:執(zhí)行以下命令,添加pushImage的標識,表示推送鏡像

  • 先將上面構建的容器和鏡像都刪掉

在這里插入圖片描述

mvn clean -DpushImage package docker:build   #這個命令不行就執(zhí)行下面一個,都一樣

mvn clean -Dmaven.test.skip=true -DpushImage package docker:build

在這里插入圖片描述

這里已經(jīng)顯示推送成功了,繼續(xù)下面游戲驗證:

在這里插入圖片描述

執(zhí)行完畢,查看Docker游戲已經(jīng)上傳成功鏡像:http://192.168.188.182:8081/

在這里插入圖片描述

二、手動發(fā)布部署微服務項目到 Docker 2.1 項目工程發(fā)布鏡像規(guī)劃

按照項目EurekaServer01的配置方式把相關項目都發(fā)布成鏡像

序號項目名稱鏡像名稱
1EurekaServer01192.168.188.138:8086/microservice-discovery-eureka:0.0.1
2ConfigServer001192.168.188.138:8086/microservice-config-server:0.0.1
3ZuulGateWay192.168.188.138:8086/microservice-zuul-gateway:0.0.1
4UserProvdier01192.168.188.138:8086/microservice-provdier-service:0.0.1
5UserWeb04192.168.188.138:8086/microservice-user-web:0.0.1

注意:

  • 因為EurekaServer01EurekaServer02只是端口和配置不同,沒必要單獨創(chuàng)建2個獨立鏡像,僅僅需要在Docker鏡像創(chuàng)建容器的時候傳遞相關參數(shù)即可。
  • 同理ConfigServer001、ConfigServer002也公用一個鏡像。
  • UserProvdier01、UserProvdier02也公用一個鏡像。
  • 先打開idea修改如下操作:

在這里插入圖片描述

2.2 項目工程發(fā)布鏡像配置 2.2.1 項目 EurekaServer01

步驟一、修改上面項目src/main下面創(chuàng)建的docker目錄下面的Dockerfile文件

# 基于哪個鏡像
FROM java:8
# 拷貝文件到容器,也可以直接寫成ADD xxxxx.jar /app.jar
ADD EurekaServer01-*.jar /app.jar
# 聲明需要暴露的端口
EXPOSE 8888
#配置環(huán)境變量,接受外部傳遞參數(shù)
#啟動端口
ENV PORT=""
#注冊中心地址
ENV EUREKA=""
# 配置容器啟動后執(zhí)行的命令
ENTRYPOINT ["sh","-c","java $PORT $EUREKA -jar /app.jar"]
#CMD ["java","-jar","/app.jar"]

在這里插入圖片描述

  • 而后刪除上面操作過的鏡像

在這里插入圖片描述

2.2.2 創(chuàng)建docker網(wǎng)絡

先創(chuàng)建一個網(wǎng)絡

docker network create mynet    #搭建一個網(wǎng)絡
docker network ls			   #查看網(wǎng)絡

在這里插入圖片描述

  • 因為上面配置做了修改,所以再次上傳

在這里插入圖片描述

mvn clean package -DpushImage docker:build

在這里插入圖片描述

分別構建Eureka1和Eureka2

docker run -di --name=eureka1 --network=mynet -e PORT="-Dserver.port=10086" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka2:10087/eureka" -p 10086:10086 192.168.188.182:8086/zql/microservice-discovery-eureka:0.0.1
 
docker run -di --name=eureka2 --network=mynet -e PORT="-Dserver.port=10087" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka" -p 10087:10087 192.168.188.182:8086/zql/microservice-discovery-eureka:0.0.1

docker logs eureka1     #通過日志查看是否啟動
docker logs eureka2  

在這里插入圖片描述

在這里插入圖片描述
命令詳細解釋如:

容器創(chuàng)建指令:
docker run                           #創(chuàng)建容器指令
-di                                  # d守護式容器、i 運行容器
--name=eureka1                       # 容器名稱
--network=mynet                      #容器加入用戶自定義網(wǎng)絡mynet
-e PORT="-Dserver.port=10086"        #指定環(huán)境參數(shù)--Eureka注冊中心服務啟動監(jiān)聽端口
                                     #指定環(huán)境參數(shù)--Eureka注冊中心地址(高可用架構)
-e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka2:10087/eureka" 
-p 10086:10086                        #容器端口號映射
192.168.188.138:8086/microservice-discovery-eureka:0.0.1   #鏡像名稱

瀏覽器驗證:http://192.168.188.181:10086/

在這里插入圖片描述

http://192.168.188.181:10087/

在這里插入圖片描述

2.2.3 項目 ConfigServer001

步驟一、拷貝EurekaServer01目錄下的docker并且修改 Dokcerfile文件的下面部分即可

# 基于哪個鏡像
FROM java:8
# 拷貝文件到容器,也可以直接寫成ADD xxxxx.jar /app.jar
COPY ConfigServer001-*.jar /app.jar
# 聲明需要暴露的端口
EXPOSE 8888
#配置環(huán)境變量,接受外部傳遞參數(shù)
#啟動端口
ENV PORT=""
#注冊中心地址
ENV EUREKA=""
# 配置容器啟動后執(zhí)行的命令
ENTRYPOINT ["sh","-c","java $PORT $EUREKA -jar /app.jar"]

在這里插入圖片描述

步驟二、修改pom.xml,修改maven Docker插件(將上面EurekaServer01的相應plugin復制過來修改下面截圖小框就可以了

com.spotifydocker-maven-plugin0.4.13192.168.188.182:8086/zql/microservice-config-server:0.0.1${project.basedir}/src/main/docker/${project.build.directory}${project.build.finalName}.jardocker-hub

在這里插入圖片描述

步驟三:進而上傳到服務器即可

在這里插入圖片描述

步驟四:執(zhí)行下列命令上傳到游戲

mvn clean package -DpushImage docker:build

在這里插入圖片描述

docker run -di --name=config1 --network=mynet -e PORT="-Dserver.port=7001" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka,http://eureka2:10087/eureka" -p 7001:7001 192.168.188.182:8086/zql/microservice-config-server:0.0.1

在這里插入圖片描述

  • 將來自己上傳github上的文件進行拉?。?/li>

在這里插入圖片描述

瀏覽器輸入:http://192.168.188.181:7001/application.yml

  • 再創(chuàng)建一個容器
docker run -di --name=config2 --network=mynet -e PORT="-Dserver.port=7002" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka,http://eureka2:10087/eureka" -p 7002:7002 192.168.188.182:8086/zql/microservice-config-server:0.0.1

在這里插入圖片描述

瀏覽器查看:http://192.168.188.181:10086/至此一共創(chuàng)建了5個容器 7001重復了啊,不然就4個

在這里插入圖片描述

再試試7002是否能拉取github項目http://192.168.188.181:7002/application.yml

2.2.4 數(shù)據(jù)庫的創(chuàng)建
docker run -di --name=db1 --network=mynet -p 3306:3306 -v /usr/local/mysqlconfig:/etc/mysql/mysql.conf.d -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=springJpa mysql:5.7

在這里插入圖片描述

驗證:

在這里插入圖片描述

在這里插入圖片描述

2.2.5 項目ZuulGateWay

步驟一、拷貝EurekaServer01目錄下的docker并且修改 Dokcerfile文件的下面部分即可

# 基于哪個鏡像
FROM java:8
# 拷貝文件到容器,也可以直接寫成ADD xxxxx.jar /app.jar
COPY ZuulGateWay-*.jar /app.jar
# 聲明需要暴露的端口
EXPOSE 8888
#配置環(huán)境變量,接受外部傳遞參數(shù)
#啟動端口
ENV PORT=""
#注冊中心地址
ENV EUREKA=""
# 配置容器啟動后執(zhí)行的命令
ENTRYPOINT ["sh","-c","java $PORT $EUREKA -jar /app.jar"]

在這里插入圖片描述

步驟二、修改pom.xml,修改maven Docker插件

org.springframework.bootspring-boot-maven-plugincom.spotifydocker-maven-plugin0.4.13 192.168.188.182:8086/zql/microservice-zuul-gateway:0.0.1 ${project.basedir}/src/main/docker   / ${project.build.directory} ${project.build.finalName}.jar   docker-hub

在這里插入圖片描述

步驟三:上傳項目服務器

在這里插入圖片描述

步驟四:上傳推送到游戲

mvn clean -DpushImage package docker:build   #這個命令不行就執(zhí)行下面一個,都一樣

mvn clean -Dmaven.test.skip=true -DpushImage package docker:build

在這里插入圖片描述

步驟五:驗證項目

2.2.6 項目UserProvdier01

步驟一、在項目根目錄創(chuàng)建docker目錄,創(chuàng)建Dockerfile文件

# 基于哪個鏡像
FROM java:8
# 拷貝文件到容器,也可以直接寫成ADD xxxxx.jar /app.jar
COPY UserProvdier01-*.jar /app.jar
# 聲明需要暴露的端口
EXPOSE 8888
#配置環(huán)境變量,接受外部傳遞參數(shù)
#監(jiān)聽端口
ENV PORT=""
#應用名稱,用來前端顯示用,不是serviceId
ENV APPLICATION=""
#注冊中心地址
ENV EUREKA=""
# 配置容器啟動后執(zhí)行的命令
ENTRYPOINT ["sh","-c","java $PORT $APPLICATION $EUREKA  -jar /app.jar"]

步驟二、修改pom.xml,修改maven Docker插件

	com.spotify	docker-maven-plugin	0.4.13			192.168.188.138:8086/microservice-provdier-service:0.0.1		${project.basedir}/docker		/${project.build.directory}${project.build.finalName}.jar		docker-hub	

步驟三、bootstrap.yml配置文件內(nèi)容

spring:
  cloud:
    config:
      discovery:
        enabled: true
        service-id: CONFIG-SERVER
      profile: dev
      label: master

步驟四、項目在git存儲的配置文件

ProviderVersion: UserProvider0.0.1
spring:
  datasource:
    url: jdbc:mysql://db1:3306/springboot-005?serverTimezone=GMT%2B8
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
  application:
    name: UserProvider
management:
  endpoints:
    web:
      exposure:
        include: refresh,health,info

注意:配置文件級別 本地配置文件—》-D參數(shù)注入配置文件----》遠程配置中心配置文件,級別越來越高。

2.2.7 項目 UserWeb06

步驟一、拷貝EurekaServer01目錄下的docker并且修改 Dokcerfile文件的下面部分即可

# 基于哪個鏡像
FROM java:8
# 拷貝文件到容器,也可以直接寫成ADD xxxxx.jar /app.jar
COPY UserWeb06-*.jar /app.jar
# 聲明需要暴露的端口
EXPOSE 8888
#配置環(huán)境變量,接受外部傳遞參數(shù)
#監(jiān)聽端口
ENV PORT=""
#應用名稱
ENV APPLICATION=""
#注冊中心服務器地址
ENV EUREKA=""
# 配置容器啟動后執(zhí)行的命令
ENTRYPOINT ["sh","-c","java $PORT $APPLICATION $EUREKA  -jar /app.jar"]

在這里插入圖片描述

步驟二、修改pom.xml,修改maven Docker插件

	com.spotify	docker-maven-plugin	0.4.13			192.168.188.182:8086/microservice-user-web:0.0.1		${project.basedir}/docker		/${project.build.directory}${project.build.finalName}.jar		 docker-hub	

步驟三、bootstrap.yml配置文件內(nèi)容

spring:
  application:
    name: UserWeb06
  cloud:
    config:
      discovery:
        enabled: true
        service-id: CONFIG-SERVER
      profile: dev
      label: master
2.3 編譯工程創(chuàng)建鏡像(對上面的總結)

步驟一、上傳項目EurekaServer01到Linux服務器目錄:/usr/local/springboot/EurekaServer01

步驟二、執(zhí)行編譯、打包、構建docker鏡像指令
進入當前項目目錄

cd  /usr/local/springboot/EurekaServer01

編譯、打包、發(fā)布Docker鏡像指令:

mvn clean -Dmaven.test.skip=true -DpushImage package docker:build

在這里插入圖片描述

查看鏡像:

docker images

在這里插入圖片描述

步驟三、其他項目
其他項目ConfigServer001、ZuulGateWay、UserProvdier01、UserWeb06也和上面一樣,上傳,然后進入項目目錄執(zhí)行編譯、打包、構建Docker鏡像指令。

最終5個鏡像全部創(chuàng)建ok

在這里插入圖片描述

在私有倉庫可以查看到鏡像

在這里插入圖片描述

上面命令匯總:

#搭建網(wǎng)絡
docker network create mynet
#查看網(wǎng)絡
docker network ls
 
#創(chuàng)建eurka01鏡像
mvn clean package -DpushImage docker:build
 
docker run -di --name=eureka1 --network=mynet -e PORT="-Dserver.port=10086" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka2:10087/eureka" -p 10086:10086 192.168.188.182:8086/zql/microservice-discovery-eureka:0.0.1
 
docker run -di --name=eureka2 --network=mynet -e PORT="-Dserver.port=10087" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka" -p 10087:10087 192.168.188.182:8086/zql/microservice-discovery-eureka:0.0.1

 
#創(chuàng)建ConfigServer001鏡像
mvn clean package -DpushImage docker:build
 
docker run -di --name=config1 --network=mynet -e PORT="-Dserver.port=7001" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka,http://eureka2:10087/eureka" -p 7001:7001 192.168.188.182:8086/zql/microservice-config-server:0.0.1
 
docker run -di --name=config2 --network=mynet -e PORT="-Dserver.port=7002" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka,http://eureka2:10087/eureka" -p 7002:7002 192.168.188.182:8086/zql/microservice-config-server:0.0.1
 
docker run -di --name=db1 --network=mynet -p 3306:3306 -v /usr/local/mysqlconfig:/etc/mysql/mysql.conf.d -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=springJpa mysql:5.7  
  
docker run -di --name=provider1 --network=mynet -e PORT="-Dserver.port=8001" -e APPLICATION="-Dspring.application.name=UserProvdier01" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka,http://eureka2:10087/eureka" -p 8001:8001  192.168.188.182:8086/zql/microservice-provdier-service:0.0.1
  
docker run -di --name=provider2 --network=mynet -e PORT="-Dserver.port=8002" -e APPLICATION="-Dspring.application.name=UserProvdier02" -e EUREKA="-Deureka.client.service-url.defaultZone=http://eureka1:10086/eureka,http://eureka2:10087/eureka" -p 8002:8002  192.168.188.182:8086/zql/microservice-provdier-service:0.0.1
2.4 搭建實際運行項目

一:項目架構圖

在這里插入圖片描述

二:創(chuàng)建docker網(wǎng)絡

根據(jù)上面的架構圖,本次需要創(chuàng)建一個用戶自定義網(wǎng)絡(上面已經(jīng)創(chuàng)建過了):
Docker指令:

docker network create mynet

查看docker網(wǎng)絡指令:

docker network ls

在這里插入圖片描述

構建網(wǎng)絡成功后,所有加入到該用戶自定義網(wǎng)絡的容器即可通過容器名稱相互連接。

步驟三:創(chuàng)建運行docker容器

步驟四:查看docker容器輸出日志

通過指令:

docker logs -f -t --tail 10 provider1

就可以查看對應的容器日志輸出

步驟五:測試運行

訪問:http://192.168.188.138:9001

在這里插入圖片描述

docker至此總結完畢???

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

分享文章:二十九、Docker(5)-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://www.muchs.cn/article22/hgsjc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、關鍵詞優(yōu)化、手機網(wǎng)站建設、營銷型網(wǎng)站建設、外貿(mào)網(wǎng)站建設、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設