docker-compose部署

Docker 部署流程手册

 

简单介绍:

服务器镜像版本: unbuntu20.04.1

部署方式:  docker+ Dockerfile+docker-compose  

docker

开源的应用容器引擎;1容器:每创建的一个容器相当于一套独立的环境,可以看作精简版本的linux,即可以在容器里面部署特定的服务;2镜像:创建容器的来源,相当于封装好的某种服务,docker在根据此镜像创建容器时候,可自定义端口,挂载等操作;  

因此 docker 可以快速多服务的部署

 

dockerfile

是一个用来构建个性化镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明

 

docker-compose

Docker Compose  Docker 官方编排项目之一,负责快速的部署分布式应用

使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务

 

 

 

 

 

 

 

 

 

 

准备工作

1 . Linux环境搭建

2.固定ip

 

 

3.设置root用户可以ssh登录

执行命令:

vi  /etc/ssh/sshd_config
 
修改内容:
PermitEmptyPasswords yes
PermitRootLogin yes
 
执行命令重启ssh服务
service sshd restart

 

 

 

 

 

安装 docker和docker-compse

下载安装docker

参考文档: https://docker_practice.gitee.io/zh-cn/install/mirror.html

 

使用 APT 安装:

先切换root用户 依次执行下列名命令

1

apt-get update

 

2添加使用 HTTPS 传输的软件包以及 CA 证书

apt-get install apt-transport-https ca-certificates curl \
gnupg-agent \
software-properties-common

 

3使用国内源

curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

 

4 sources.list 中添加 Docker 软件源

add-apt-repository \
    "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
    $(lsb_release -cs) \
    stable"

5

apt-get update

 

6

apt-get install docker-ce docker-ce-cli containerd.io

 

7  设置开机启动 docker

 sudo systemctl enable docker 
 

8 启动 docker

sudo systemctl start docker

 

输入下面命令检查是否启动

docker ps                                                                      

没有错误提示就是启动成功

 

 

下载安装docker-compose

使用curl Compose 文件下载到/usr/local/bin目录:

curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

 

将该文件设置为可执行:

chmod +x /usr/local/bin/docker-compose

 

安装成功,运行下面的命令,打印 Compose 的版本:

docker-compose --version

 

docker-compose 基本命令

想要卸载 Docker Compose,只需要简单删除二进制文件即可,输入:

sudo rm /usr/local/bin/docker-compose

 

通过在 Compose 后面加上-d选项,以后台模式启动 Compose:

docker-compose up -d

 

想要检查运行的服务,使用ps选项

docker-compose ps

 

当 Compose 运行在后台模式,想要停止服务,运行:

docker-compose stop

 

想要停止,并且移除应用容器,和网络,使用down选项

docker-compose down

 

 

 

 

 

 

创建工作目录

/* 以下目录名称和层级是较方便执行的建议,可以根据配置文件具体配置进行调整 */

 

主要目录结构

//蓝色框框是文件

 

      

 

Dockerfile目录:子文件夹用服务名称命名,服务文件夹下面放dockerfile

Volumes 目录:挂载目录(容器里面的数据存放到宿主机的位置)。子文件夹用服务名称命名, 服务文件夹下面按需创建目录,其创建的目录就是要挂载的目录

 

配置文件

Dockerfile

基本指令释意:

FROM:基础镜像名

ENV :环境变量,供下文使用

(可不用)MAINTAINER:构建的用户

(可不用)LABEL:其他描述

COPY:把宿主机文件复制到容器目录

RUN:执行命令

Mysql

//基础镜像,如果本地有自动选择本地  

FROM mysql:5.7.15

//一些备注信息

MAINTAINER " username "

 

# mysql的工作位置

ENV WORK_PATH /usr/local/

 

# 定义会被容器自动执行的目录

ENV AUTO_RUN_DIR /docker-entrypoint-initdb.d

 

# 初始化数据库的SQL文件

ENV FILE_0 initSql.sql

 

# 执行SQL

ENV INSTALL_DATA_SHELL docker-entrypoint.sh

 

# 把要执行的sql文件赋值到到MySQL的工作目录下

COPY ./$FILE_0 $WORK_PATH/

 

# 把要执行的shell文件放到/docker-entrypoint-initdb.d/目录下,容器会自动执行这个shell

COPY ./$INSTALL_DATA_SHELL $AUTO_RUN_DIR/

 

# 给执行文件增加可执行权限

RUN chmod a+x $AUTO_RUN_DIR/$INSTALL_DATA_SHELL && \

    rm /etc/mysql/conf.d/mysql.cnf

 

# 需要替换的配置文件

ENV MY_CNF conf/my.cnf

 

COPY ./$MY_CNF /etc/mysql/conf.d/

 

 

Tomcat

//基础镜像,如果本地有自动选择本地

from tomcat:8.5.4

 

//一些备注信息

MAINTAINER username

LABEL version="8.5.4" description="tomcat部署"

 

#容器的工作路径

ENV WORK_PATH /usr/local/tomcat

 

#定义要替换的文件名

ENV USER_CONF_FILE_NAME tomcat-users.xml

#定义要替换的server.xml文件名

ENV SERVER_CONF_FILE_NAME server.xml

#定义需要替换的context.xml文件名

ENV WEBAPP_CONTEXT_FILE_NAME context.xml

ENV CONF_MANAGER manager.xml

 

 

#删除原文件

RUN rm $WORK_PATH/conf/$USER_CONF_FILE_NAME && \

    rm $WORK_PATH/conf/$SERVER_CONF_FILE_NAME

      

#替换为新的文件

COPY ./conf/$SERVER_CONF_FILE_NAME $WORK_PATH/conf/

COPY ./conf/$USER_CONF_FILE_NAME $WORK_PATH/conf/

COPY ./conf/$CONF_MANAGER $WORK_PATH/conf/Catalina/localhost/    

#  拷贝war文件夹下所有war包和config文件夹

#copy ./war/*.war $WORK_PATH/webapps/

copy ./config $WORK_PATH/config

 

 

 

docker-compose

 

基本指令释意:

Version:docker-compose的版本

Build:dockerfile目录

image

 

 

 

version: "3.5"

 

services:

  tomcat:

    build: ./dockerfile/tomcat/

    image: hlhz_tomcat:0.1          #镜像名称和版本,如果没有build,会从本地用本镜像构建,如果本地也没有就从中央仓库拉取这个镜像

    container_name: ${tomcat_container}           #容器名

 #   env_file:     //变量文件路径 默认取当级目录

  #    - ./.env

    restart: always                        # 启动策略 docker启动服务就会启动

    depends_on:                  #依赖于mysql和redis,目的是为了在mysql和redis启动之后再启动本容器

      - mysql

    volumes:                           #挂载

      - ${tomcat_logs}:${tomcat_work_path}/logback

      - ${tomcat_config_path}:/usr/local/tomcat/config

      - ${tomcat_webapps}:/usr/local/tomcat/webapps

    ports:                                #映射端口

      - ${tomcat_port}:8080

    networks:     #桥接的网络名称

      - hlhz_bridge

    environment:     

      TZ: Asia/Shanghai   #时区

  mysql:         

    restart: always   

    build: ./dockerfile/mysql/  

    image: hlhz_mysql:0.1

    container_name: ${mysql_container} 

    ports:

      - ${mysql_port}:3306 

    command: --default-authentication-plugin=mysql_native_password

    environment:

      MYSQL_ROOT_PASSWORD: 123456

      TZ: Asia/Shanghai      

    volumes:

      - ${mysql_data}:/var/lib/mysql

    networks:

      - hlhz_bridge

  redis:

    image: redis:6.0.6

    container_name: ${redis_container}_redis

    restart: always

    networks:

      - hlhz_bridge

    ports:

      - ${redis_port}:6379

    volumes:

      - ${redis_data}:/data

    command: redis-server --appendonly yes --requirepass ${redis_password}

networks:   

   hlhz_bridge:   

    external: true

      

.env

作用: docker-compose 环境变量  使用格式 ${value }

 

tomcat_container=tomcat8

tomcat_conf=./volumes/tomcat/conf

tomcat_logs=./volumes/tomcat/logback

tomcat_port=28080

tomcat_webapps=./volumes/tomcat/webapps

tomcat_config_path=./volumes/tomcat/config

#容器工作路径

tomcat_work_path=/usr/local/tomcat

 

 

mysql_container=mysql5.7

mysql_port=33066

mysql_data=./volumes/mysql/data

mysql_conf=./volumes/mysql/conf

 

 

nginx_name=hlhz

nginx_config=./dockerfile/nginx/config/nginx.conf

nginx_port=80

 

redis_password=xapp

redis_container=hlhz

redis_data=./volumes/redis/data

redis_port=63799

 

 

 

启动docker-compose部署

 

1:创建桥接网络

docker network create --driver bridge hlhz_bridge

 

2镜像加速

创建文件

mkdir -p /etc/docker sudo tee /etc/docker/daemon.json

写入内容

{ "registry-mirrors": ["https://l7tk0eqx.mirror.aliyuncs.com"] }

重启

systemctl daemon-reload

重启

systemctl restart docker

3进入work 目录下,执行命令

docker-compose  up -d

 

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值