您现在的位置是:首页 >技术杂谈 >Docker服务编排(Docker Compose) :部署上线nginx+springboot项目网站首页技术杂谈
Docker服务编排(Docker Compose) :部署上线nginx+springboot项目
简介Docker服务编排(Docker Compose) :部署上线nginx+springboot项目
Docker服务编排(Docker Compose)
-
微服务应用一般包含若干个微服务每个微服务一般会部署多个实例,如果每个微服务需要手动启停
-
维护工作量大
-
从Dockerfile build image 或者去dockerhub拉去image
-
创建多个容器
-
管理容器
Docker Compose
一个编排多容器分布式部署工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动,停止,使用步骤:
-
Dockerfile定义运行镜像
-
docker-compose.yml定义组成应用各服务
-
运行docker-compose up 启动
Docker Compose安装使用
安装
[root@server-a ~]# curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
设置文件可执行权限
chmod +x /usr/local/bin/docker-compose
docker-compose -version
docker-compose version 1.22.0, build f46880fe
卸载
# 二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose
编排nginx+springboot项目
springboot项目创建
- 首先创建一个springboot项目,使用IDEA的spring Initializr创建,创建一个Controller
@RestController
public class Controller {
@RequestMapping("/hello")
public String hello(){
return "HELLO DOCKER";
}
}
-
启动项目,页面访问
-
maven将项目打成jar包
-
将jar包传入你选择的目录中去
[root@server-a ~]# mkdir docker-files
[root@server-a ~]# cd docker-files
[root@server-a docker-files]# ls
[root@server-a docker-files]# ll
总用量 17152
-rw-r--r--. 1 root root 17561003 5月 8 04:04 app-0.0.1-SNAPSHOT.jar
-
定义父镜像 FROM java
-
定义作者信息 MAINTAINER
-
将jar包添加到容器 ADD
-
定义容器启动时命令 CMD
[root@server-a docker-files]# vim app-dockerfile [root@server-a docker-files]# cat app-dockerfile FROM java:8 MAINTAINER rkun18 ADD app-0.0.1-SNAPSHOT.jar app.jar CMD java -jar app.jar
docker build -f ./app-dockerfile -t app .
- 查看刚创建app镜像
```bash
[root@server-a docker-files]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
app latest 3d2ef669ba18 About a minute ago 661MB
nginx latest 605c77e624dd 16 months ago 141MB
tomcat latest fb5657adc892 16 months ago 680MB
centos 7 eeb6ee3f44bd 19 months ago 204MB
java latest d23bdf5b1b1b 6 years ago 643MB
-
使用镜像创建容器并启动,(注意这里如果容器创建了没启动可能是java版本过低,不适配)
错误发生,查看容器日志
docker logs <container_name_or_id>
[root@server-a docker-files]# docker run -id -p 9000:8080 --name=c1 app
e7dd2eb736a00a1797e8c494748dbbb9bb68523b5599ba86cea9877c91f479c8
[root@server-a docker-files]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e7dd2eb736a0 app "/bin/sh -c 'java -j…" 6 seconds ago Up 5 seconds 0.0.0.0:9000->8080/tcp, :::9000->8080/tcp c1
- 测试访问宿主机ip:9000/hello
开始部署
- 创建docker-compose目录
[root@server-a ~]# mkdir ~/docker-compose
[root@server-a ~]# cd ~/docker-compose
- 编写 docker-compose.yml 文件
version: '3'
services:
nginx:
image: nginx
ports:
- 80:80
links:
- app
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d #宿主机目录:容器目录
app:
image: app
expose:
- "8080"
- 创建宿主机挂载目录,写入配置信息
[root@server-a docker-compose]# mkdir -p ./nginx/conf.d
[root@server-a docker-compose]# cd ./nginx/conf.d
[root@server-a conf.d]# vim usr.conf
[root@server-a conf.d]# cat usr.conf
server {
listen 80;
access_log off;
location / {
proxy_pass http://app:8080
- 切换目录,启动容器
[root@server-a ~]# cd docker-compose/
[root@server-a docker-compose]# docker-compose up
启动效果
- 访问宿主机80端口,查看效果
成功访问
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。