docker安裝再也不演示,此處演示如何安裝docker-composejava
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
Dockerfile是一個文本文件。git
[root@rainbow /]# mkdir web [root@rainbow /]# cd web/ [root@rainbow web]#
[root@rainbow web]# vi Dockerfile
FROM java:8 ADD rainbow-api-user-0.0.1-SNAPSHOT.jar rainbow-api-user.jar RUN bash -c 'touch /rainbow-api-user.jar' EXPOSE 8085 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/rainbow-api-user.jar"]
- 打包
點擊以下圖:
image.pnggithub
image.pngweb
image.pngspring
若是配置爲127.0.0.1,那從物理機能夠訪問到Linux中的mongodb,可是若是spring boot部署到docker容器中,就沒法訪問了,由於127.0.0.1指向的是容器自己。這點我也是踩了個坑。mongodb
待項目打包完成後,在項目的target路徑下,會有兩個jar包,咱們須要以下的:docker
image.png數據庫
[root@rainbow web]# mkdir webapp [root@rainbow web]# mv Dockerfile webapp/
將jar文件上傳到webapp目錄下。此時,webpp下有以下兩個文件:centos
image.pngapi
如今,咱們可使用docker來構建項目了。因爲咱們本次的目的是使用docker-compose構建,因此只寫出構建命令
在webapp路徑下執行:
docker build -t spring .
三、使用docker-compose構建
首先,新建一個docker-compose.yml文件。因爲這是個yaml文件,因此格式、縮進很重要。爲了避免出錯,因此在spring boot項目的resources目錄下新建一個docker-compose.yml文件,配置好相關項以後,再上傳到服務器。內容以下:
spring: build: ./webapp ports: - "80:8085"
這個腳本表示,從當前路徑的webapp目錄中建立鏡像,並將鏡像命名爲:web,而後使用宿主的80端口映射容器的8085端口。固然,webapp中存放有項目的jar和Dockerfile腳本。
說明:容器的8085端口,由於我本身的項目是跑在8085端口上的,因此要將容器的8085端口映射出來,才能訪問。
將docker-compose.yml文件上傳到服務器的web目錄下:
此時,web的目錄結構以下:
image.png
最後,咱們就可使用docker-compose up -d 命令來構建運行了。-d表示在後臺運行。注意,要在web路徑下執行。
構建成功以後,會與以下的提示:
[root@rainbow web]# docker-compose up -d Building spring Step 1 : FROM java:8 ---> d23bdf5b1b1b Step 2 : ADD rainbow-api-user-0.0.1-SNAPSHOT.jar rainbow-api-user.jar ---> e2d71b21b18d Removing intermediate container a67714060589 Step 3 : RUN bash -c 'touch /rainbow-api-user.jar' ---> Running in 80373f7f206f ---> 00e9ab13963d Removing intermediate container 80373f7f206f Step 4 : EXPOSE 8085 ---> Running in a161e595c79c ---> b77fe6b6f8e3 Removing intermediate container a161e595c79c Step 5 : ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /rainbow-api-user.jar ---> Running in e25617bae6a2 ---> a5a04f6f82a1 Removing intermediate container e25617bae6a2 Successfully built a5a04f6f82a1 WARNING: Image for service spring was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`. Creating web_spring_1 ... Creating web_spring_1 ... done [root@rainbow web]#
到此,容器已經構建運行完成。spring boot項目已經完成發佈了。
查看運行的容器
docker-compose ps
[root@rainbow web]# docker-compose ps Name Command State Ports web_spring_1 java -Djava.security.egd=f ... Up 0.0.0.0:80->8085/tcp [root@rainbow web]#
docker-compose logs -f spring
image.png
docker-compose stop spring
docker-compose start spring