docker微服務部署之:4、安裝docker、docker中安裝mysql和jdk1.八、手動構建鏡像、部署項目

docker微服務部署之:三,搭建Zuul微服務項目html

1.Centos7安裝Docker

  詳見:Centos7安裝Dockerjava

2.Docker中安裝jdk1.8

 詳見:使用Docker構建jdk1.8mysql

3.Docker中安裝mysql5.7

詳見:docker安裝mysqlspring

在防火牆中開啓3306端口,否則啓動article項目鏈接docker中的mysql時,會報以下錯誤:sql

Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

查看端口是否開啓,開啓端口以及移除指定端口命令以下:docker

#查看是否開啓指定端口
$ sudo firewall-cmd --query-port=3306/tcp
no
#添加指定須要開放的端口
$ sudo firewall-cmd --add-port=3306/tcp --permanent
success
#移除指定端口
#firewall-cmd --permanent --remove-port=3306/tcp #從新載入添加
/移除的端口 $ sudo firewall-cmd --reload #也可再查下是否開啓指定端口 $ sudo firewall-cmd --query-port=3306/tcp yes

4.部署demo_eureka項目

個人虛擬機的ip地址爲:192.168.31.181瀏覽器

4.1 把demo_eureka項目打成jar包

4.1.1 打包前,修改項目配置

在打包以前,須要在demo_eureka項目中修改以下幾個地方:app

修改pom.xml,新增以下內容:maven

    <build>
        <finalName>app</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

修改application.yml中以下內容tcp

     #defaultZone: http://127.0.0.1:${server.port}/eureka
#192.168.31.181爲虛擬機的IP地址 defaultZone: http://192.168.31.181:${server.port}/eureka

4.1.2 將demo_eureka項目打成app.jar

將demo_eureka項目以及後面的demo_article項目、demo_zuul項目都打成app.jar,是由於方便利用Dockerfile部署時方便。

點擊idea窗體左小角的Terminal,而後將項目demo_eureka拖動到Terminal窗體裏,接着輸入mvn clean package,如圖:

刷新target目錄,便可在該目錄下看到app.jar。

4.1.3 防火牆開啓7000端口(7000端口爲demo_eureka項目中自定義的server.port端口號)

若是沒有開啓7000端口,article服務和zuul服務,會註冊不到eureka上來。

#查看是否開啓指定端口
$ sudo firewall-cmd --query-port=7000/tcp
no
#添加指定須要開放的端口
$ sudo firewall-cmd --add-port=7000/tcp --permanent
success
#移除指定端口
#firewall-cmd --permanent --remove-port=7000/tcp
#從新載入添加/移除的端口
$ sudo firewall-cmd --reload
#也可再查下是否開啓指定端口
$ sudo firewall-cmd --query-port=7000/tcp
yes

 4.1.4 docker構建eureka鏡像,建立並運行eureka容器、查看eureka容器運行日誌

a.構建鏡像前的準備工做:

# 建立用於存放app.jar和Dockerfile文件的目錄,取名爲mydocker
$ sudo mkdir /usr/local/mydocker
$ sudo cd /usr/local/mydocker
# 將app.jar上傳到該目錄(/usr/local/mydocker/)
# 建立Dockerfile文件,文件名必須如出一轍
$ sudo vi Dockerfile
# 基於jdk1.8鏡像構建eureka鏡像(由於eureka是打成了jar是經過java -jar來運行) FROM jdk1.
8
# 將當前目錄的app.jar,複製到eureka鏡像的/目錄,名爲app.jar ADD app.jar /app.jar
# 之因此用ENTRYPOINT命令,而不是CMD命令,是由於docker run會覆蓋掉CMD命令裏的內容。該行命令,就是執行java -jar /app.jar ENTRYPOINT [
"java","-jar","/app.jar"]

b.構建eureka鏡像

# eureka爲構建後的鏡像名稱,下面最後的.和.前面的空格必定不能少。最後的.表示使用當前目錄中的Dockerfile來構建。
$ sudo docker build -t eureka .
Sending build context to Docker daemon  46.05MB
Step 1/3 : FROM jdk1.8
 ---> 1f2578d93bd0
Step 2/3 : ADD app.jar /app.jar
 ---> 14d818fa91b0
Step 3/3 : ENTRYPOINT ["java","-jar","/app.jar"]
 ---> Running in d421e50bf8cd
Removing intermediate container d421e50bf8cd
 ---> 15c87bf6f8e5
Successfully built 15c87bf6f8e5
Successfully tagged eureka:latest
# 上面輸出Successfully...表示構建eureka鏡像成功,也可經過docker images命令查看是否構建成功
$
sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE eureka latest 15c87bf6f8e5 51 seconds ago 645MB
...
# 上面能夠看到REPOSITORY下有一個名爲eureka的鏡像,即表示構建成功

c.運行eureka容器

# docker run 表示建立一個新的容器並運行
# -d 表示以守護模式運行,也就是後臺運行,非阻塞式運行
# --name=eureka 表示運行後的容器名稱爲eureka
# -p 7000:7000 表示將宿主機的7000端口和eureka容器的7000之間作個綁定
# 最後的eureka,是docker images中查看到的鏡像名稱
$ sudo docker run -d --name=eureka -p 7000:7000 eureka
0af7b3701b59048f9f9a901b29aff31b9956b2391c3d299f7e5f6016c8c44ffb
#出現如上一個很長的字符串,表示運行docker建立了一個eureka容器,並運行eureka容器成功,但至於eureka容器中的eureka服務是否能和咱們預期的那麼部署成功,還待下一步驗證

d.驗證eureka服務

首先查看eureka容器是否在運行中

#查看運行中的容器(後面加 -a 可查看全部容器,無論該容器是否在運行中)
$ sudo docker ps
CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS                    NAMES
0af7b3701b59        eureka                    "java -jar /app.jar"     17 minutes ago      Up 17 minutes       0.0.0.0:7000->7000/tcp   eureka

可經過兩種方式驗證:

1.經過瀏覽器訪問eureka服務地址,是否能看到eureka界面

2.經過查看運行日誌

# docker logs 查看docker容器運行日誌
# -f --tail=30 一直查看最後30行的日誌
# eureka 容器的名稱
$ sudo docker logs -f --tail=30 eureka

 5.部署demo_article項目

5.1 把demo_article項目打成jar包

5.1.1 打包前,修改項目配置

在打包以前,須要修改demo_article項目中修改以下幾個地方:

修改pom.xml,新增以下內容:

   <build>
        <finalName>app</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

修改application.yml中相應部份內容爲以下:

  ...
    url: jdbc:mysql://192.168.31.181:3306/docker?characterEncoding=UTF8
  ...
      defaultZone: http://192.168.31.181:7000/eureka
  ...

5.1.2 將demo_article項目打成app.jar

點擊idea窗體左小角的Terminal,而後將項目demo_article拖動到Terminal窗體裏,接着輸入mvn clean package,回車,刷新target目錄,便可在該目錄下看到app.jar。

5.1.3 防火牆開啓9001端口(9001端口爲demo_article項目中自定義的server.port端口號)

若是沒有開啓9001端口,會出現demo_article項目在article容器中啓動成功,可是沒法訪問article服務。

#查看是否開啓指定端口
$ sudo firewall-cmd --query-port=9001/tcp
no
#添加指定須要開放的端口
$ sudo firewall-cmd --add-port=9001/tcp --permanent
success
#移除指定端口
#firewall-cmd --permanent --remove-port=9001/tcp
#從新載入添加/移除的端口
$ sudo firewall-cmd --reload
#也可再查下是否開啓指定端口
$ sudo firewall-cmd --query-port=9001/tcp
yes

5.1.4 docker構建article鏡像、建立和運行article容器、查看article容器運行日誌

a.構建鏡像前的準備工做

$ sudo cd /usr/local/mydocker
# 將app.jar上傳到該目錄(/usr/local/mydocker/)
$ sudo ls
app.jar Dockerfile

由於在構建eureka鏡像時,已經建立了一個用於存放jar包和Dockerfile的目錄叫mydocker,因此不用再建立。

另外,因爲無論是哪一個項目,都打包成了名爲app.jar,因此Dockerfile文件也能夠複用。

故只須要把demo_article打成的jar包,上傳到/usr/local/mydocker目錄下,覆蓋掉原先的app.jar便可。

b.構建article鏡像

# article爲構建後的鏡像名稱,下面最後的.和.前面的空格必定不能少。最後的.表示使用當前目錄中的Dockerfile來構建。
$ sudo docker build -t article .
Sending build context to Docker daemon  46.05MB
Step 1/3 : FROM jdk1.8
 ---> 1f2578d93bd0
Step 2/3 : ADD app.jar /app.jar
 ---> 9633e0cb462b
Step 3/3 : ENTRYPOINT ["java","-jar","/app.jar"]
 ---> Running in a51dd9b611e6
Removing intermediate container a51dd9b611e6
 ---> 7f5954f085f6
Successfully built 7f5954f085f6
Successfully tagged eureka:latest
# 上面輸出Successfully...表示構建article鏡像成功,也可經過docker images命令查看是否構建成功
$ sudo docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
article                    latest              7f5954f085f6        2 minutes ago      651MB
...
# 上面能夠看到REPOSITORY下有一個名爲article的鏡像,即表示構建成功

c.運行article容器

# docker run 表示建立一個新的容器並運行
# -d 表示以守護模式運行,也就是後臺運行,非阻塞式運行
# --name=article 表示運行後的容器名稱爲article
# -p 9001:9001 表示將宿主機的9001端口和eureka容器的9001之間作個綁定
# 最後的eureka,是docker images中查看到的鏡像名稱
$ sudo docker run -d --name=article -p 9001:9001 article
7031e9a5bd25d2708e18b8b986ae3081c09bb29caa4948fd437e7b5a9b47c602
#出現如上一個很長的字符串,表示運行docker建立了一個article容器,並運行article容器成功,但至於article容器中的article服務是否能和咱們預期的那麼部署成功,還待下一步驗證

d.驗證article服務

首先查看article容器是否在運行中

#查看運行中的容器(後面加 -a 可查看全部容器,無論該容器是否在運行中)
$ sudo docker ps
CONTAINER ID        IMAGE                     COMMAND                  CREATED              STATUS              PORTS                    NAMES
7031e9a5bd25        article                   "java -jar /app.jar"     About a minute ago   Up About a minute   0.0.0.0:9001->9001/tcp   article

可經過三種方式驗證:

1.經過瀏覽器訪問eureka服務地址,查看demo_article服務是否註冊到eureka上

2.經過查看運行日誌

# docker logs 查看docker容器運行日誌
# -f --tail=30 一直查看最後30行的日誌
# article 容器的名稱
$ sudo docker logs -f --tail=30 article 

3.經過訪問demo_article項目的url

6. 部署demo_zuul項目

6.1 把demo_zuul項目打成jar包

6.1.1 打包前,修改項目配置

在打包以前,須要修改demo_zuul項目中修改以下幾個地方:

修改pom.xml,新增以下內容:

   <build>
        <finalName>app</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

修改application.yml中相應部份內容爲以下:

...
    defaultZone: http://192.168.31.181:7000/eureka
...

6.1.2 將demo_zuul項目打成app.jar

點擊idea窗體左小角的Terminal,而後將項目demo_zuul拖動到Terminal窗體裏,接着輸入mvn clean package,回車,刷新target目錄,便可在該目錄下看到app.jar。

6.13 防火牆開啓8888端口(8888端口爲demo_zuul項目中自定義的server.port端口號)

若是沒有開啓8888端口,會出現經過網關代理去訪問article服務時,出現訪問錯誤狀況。

#查看是否開啓指定端口
$ sudo firewall-cmd --query-port=8888/tcp
no
#添加指定須要開放的端口
$ sudo firewall-cmd --add-port=8888/tcp --permanent
success
#移除指定端口
#firewall-cmd --permanent --remove-port=8888/tcp
#從新載入添加/移除的端口
$ sudo firewall-cmd --reload
#也可再查下是否開啓指定端口
$ sudo firewall-cmd --query-port=8888/tcp
yes

6.1.4 docker構建zuul鏡像、建立和運行zuul容器、查看zuul容器運行日誌

a.構建鏡像前的準備工做

$ sudo cd /usr/local/mydocker
# 將app.jar上傳到該目錄(/usr/local/mydocker/)
$ sudo ls
app.jar Dockerfile

由於在構建eureka鏡像時,已經建立了一個用於存放jar包和Dockerfile的目錄叫mydocker,因此不用再建立。

另外,因爲無論是哪一個項目,都打包成了名爲app.jar,因此Dockerfile文件也能夠複用。

故只須要把demo_article打成的jar包,上傳到/usr/local/mydocker目錄下,覆蓋掉原先的app.jar便可。

b.構建zuul鏡像

# zuul爲構建後的鏡像名稱,下面最後的.和.前面的空格必定不能少。最後的.表示使用當前目錄中的Dockerfile來構建。
$ sudo docker build -t zuul .
Sending build context to Docker daemon  46.05MB
Step 1/3 : FROM jdk1.8
 ---> 1f2578d93bd0
Step 2/3 : ADD app.jar /app.jar
 ---> 9496a939de7f
Step 3/3 : ENTRYPOINT ["java","-jar","/app.jar"]
 ---> Running in e682a3f423e5
Removing intermediate container e682a3f423e5
 ---> 62c091b00c8f
Successfully built 62c091b00c8f
Successfully tagged eureka:latest
# 上面輸出Successfully...表示構建article鏡像成功,也可經過docker images命令查看是否構建成功
$ sudo docker images
REPOSITORY                TAG                 IMAGE ID            CREATED              SIZE
zuul                      latest              62c091b00c8f        About a minute ago   642MB
...
# 上面能夠看到REPOSITORY下有一個名爲zuul的鏡像,即表示構建成功

c.運行zuul容器

# docker run 表示建立一個新的容器並運行
# -d 表示以守護模式運行,也就是後臺運行,非阻塞式運行
# --name=zuul 表示運行後的容器名稱爲zuul
# -p 8888:8888 表示將宿主機的9001端口和zuul容器的8888之間作個綁定
# 最後的zuul,是docker images中查看到的鏡像名稱
$ sudo docker run -d --name=zuul -p 8888:8888 zuul
94a28b1a9fdd2456aab3cbae3685e3fe77cd1754e2107a6f3bcc0b3d788051d1
#出現如上一個很長的字符串,表示運行docker建立了一個zuul容器,並運行zuul容器成功,但至於zuul容器中的zuul服務是否能和咱們預期的那麼部署成功,還待下一步驗證

d.驗證zuul服務

首先查看zuul容器是否在運行中

#查看運行中的容器(後面加 -a 可查看全部容器,無論該容器是否在運行中)

$ sudo # docker ps
CONTAINER ID        IMAGE                     COMMAND                  CREATED              STATUS              PORTS                    NAMES
94a28b1a9fdd        zuul                      "java -jar /app.jar"     About a minute ago   Up About a minute   0.0.0.0:8888->8888/tcp   zuul

可經過三種方式驗證:

1.經過瀏覽器訪問eureka服務地址,查看demo_zuul服務是否註冊到eureka上

 

2.經過查看運行日誌

# docker logs 查看docker容器運行日誌
# -f --tail=30 一直查看最後30行的日誌
# zuul容器的名稱
$ sudo docker logs -f --tail=30 zuul

3.經過zuul網關代理訪問demo_article項目的url

docker微服務部署之:5、利用DockerMaven插件自動構建鏡像

相關文章
相關標籤/搜索