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