Docker Compose部署服务步骤

1.安装Docker Compose

通过以下命令安装Docker Compose:

[root@localhost~]# curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

为安装脚本添加执行权限:

[root@localhost~]# chmod +x /usr/local/bin/docker-compose

查看安装结果

[root@localhost~]# docker-compose --version
docker-compose version 1.23.2, build 1110ad01

输出结果如上,说明安装成功。

2.安装Compose 命令补全工具
# 补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

 如果这里出现错误,需要修改自己的hosts文件:
echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts
3.Docker Compose快速入门
基本步骤

使用Compose大致有3个步骤:

  • 使用Dockerfile(或其他方式定义)定义应用程序环境,以便在任何地方重现该环境。
  • 在docker-compose.yml文件中定义组成应用程序的服务,以便各个服务在一个隔离环境中一起执行。
  • 运行 docker-compose up 命令,启动并运行整个命令程序。
Compose常用命令
docker-compose -h                           # 查看帮助
docker-compose up                           # 启动所有docker-compose服务
docker-compose down                         # 停止并删除容器、网络、卷、镜像
docker-compose logs  yml里面的服务id          # 查看容器输出日志
docker-compose config                       # 检查配置
docker-compose config -q                    # 检查配置,有问题才有输出
docker-compose restart                      # 重启服务
docker-compose start                        # 启动服务
docker-compose stop                         # 停止服务
docker-compose exec  yml里面的服务id          # 进入容器实例内部  
docker-compose exec docker-compose.yml文件中写的服务id /bin/bash
docker-compose ps                           # 展示当前docker-compose编排过的运行的所有容器
docker-compose top                          # 展示当前docker-compose编排过的容器进程
docker-compose up -d                        # 启动所有docker-compose服务并后台运行

1.上传 /suninfo-analyse-1.0.jar 到自定义目录 /usr/local/project

2.在/suninfo-analyse-1.0.jar所在路径创建Dockerfile 文件,添加如下内容

[root@CentOS-Alone project]# vim Dockerfile

FROM java

#创建一个目录存放jar包(在容器里面创建目录)
RUN mkdir -p /suninfo/config  /suninfo/logs

#复制jar包以及相关配置文件(复制jar包到容器的根目录)
COPY suninfo-analyse-1.0.jar /suninfo-analyse-1.0.jar

#添加进入docker容器后的目录
WORKDIR /suninfo

#配置项目端口
CMD ["--server.port=8888"]

#对外暴露的端口号
EXPOSE 8888

#修改文件的创建修改时间
RUN bash -c 'touch /suninfo-analyse-1.0.jar'

#运行脚本,启动springboot项目,这里我们指定加载配置文件的位置,并且通过数据卷挂载同步到容器中
ENTRYPOINT ["java","-jar","/suninfo-analyse-1.0.jar"]

3.在jar包文件所在目录创建 docker-compose.yml,添加如下内容

version: '2' #表示docker-compose.yml只用的是Version 2 file
services:
  suninfo-analyse: # 指定服务名称,自定义
    image: suninfo-analyse:v1
    container_name: suninfo-analyse  #容器名称
    hostname: suninfo-analyse
    environment:
      JARNAME: suninfo-analyse-1.0.jar
      JVM_OPTS: -Xms2232m -Xmx2232m -Xss256k -XX:NewRatio=3 -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m  
    volumes: # 容器数据卷映射路径
      - /usr/local/priject/update:/project/update
      - /usr/local/priject/config:/project/config  
    ports:   #指定端口映射,类似于docker run的 -p选项
      - "8888:8888"
    restart: always
    depends_on:  #依赖关系
      - redis
      - mysql
    deploy:
      resources:
        limits:
          memory: 8G
     networks: #网络模式 
      - van_net      
networks:
  default:
    external:
      name: sysbase_snet          

创建network

[root@localhost compose-elastic]# docker network create --driver bridge van_net
2e8afa08b4e0ebd04fc8bc94082f28b8...
[root@localhost compose-elastic]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
2e8afa08b4e0       van_net              bridge              local

以下是docker-compose.yml文件中的配置说明:

version:指定Compose文件版本。
services:定义需要启动的服务及它们所需的镜像、端口映射、环境变量、挂载到主机上的目录等相关信息。
volumes:定义数据卷,即将容器内部的数据持久化到宿主机的目录中。
networks:定义网络,使得多个服务可以在同一网络下相互通信。 environment:指定环境变量,传递给服务容器使用。
ports:定义端口映射,将容器内部的端口映射到宿主机端口。 depends_on:定义服务启动的依赖关系,保证依赖的服务先启动。
build:定义镜像构建的相关信息,包括构建上下文路径、Dockerfile路径以及构建参数等。
#构建镜像
[root@CentOS-Alone project]#  docker build -t suninfo-analyse:v1 .

#检查docker-compose.yml 文件是否存在问题

[root@CentOS-Alone project]#  docker-compose config -q

4.在 docker-compose.yml 所在路径执行以下命令,Compose 就会自动构建镜像并使用镜像启动容器,也可以使用-d选项,后台运行这些容器

[root@localhost~ target]# docker-compose up -d

5.访问http://宿主机I:8888/,即可访问

6.docker 相关操作

创建镜像

docker build -t demo:1.0 .

​ demo为自己起的镜像名,1.0为版本号,最后的 . 代表当前位置的上下路径,表示在当前路径下制作镜像;

运行镜像

docker run -p 9000:2021 -d --name demo demo:1.0  -v /usr/local/project:/config

上面命令中注意的是:9000:2021,9000指的是Dockerfile文件中设定的暴露出的端口号,2021指的是jar包项目中的访问端口号
参数说明:
--name:定义容器名。
-p:宿主机与容器的端口挂载,格式:宿主机端口:容器内部端口
-v:宿主机目录与容器内目录映射,格式:宿主机目录:容器内部目录
-d:后台执行

查看已映射目录

docker inspect container_name | grep Mounts -A 20	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值