采用Docker Compose同时部署多个容器

在实际工程中,我们有多个容器同时需要部署,比如mysql、redis以及主程序,这时候手动启动三个容器,一个一个启动非常麻烦,那么这个时候就用到了compose。

1、首先下载docker-compose可执行文件
链接:https://github.com/docker/compose/releases
采用Docker Compose同时部署多个容器_第1张图片
根据自己服务器版本下载后放在,/usr/local/bin/下面:
在这里插入图片描述
这时候,在bash命令行中输入下列命令

ADM11:~/media$ docker-compose 

Usage:  docker compose [OPTIONS] COMMAND

Docker Compose

Options:
      --ansi string                Control when to print ANSI control characters
                                   ("never"|"always"|"auto") (default "auto")
      --compatibility              Run compose in backward compatibility mode
      --env-file string            Specify an alternate environment file.
  -f, --file stringArray           Compose configuration files
      --profile stringArray        Specify a profile to enable
      --project-directory string   Specify an alternate working directory
                                   (default: the path of the Compose file)
  -p, --project-name string        Project name

Commands:
  build       Build or rebuild services
  convert     Converts the compose file to platform's canonical format
  cp          Copy files/folders between a service container and the local filesystem
  create      Creates containers for a service.
  down        Stop and remove containers, networks
  events      Receive real time events from containers.
  exec        Execute a command in a running container.
  images      List images used by the created containers
  kill        Force stop service containers.
  logs        View output from containers
  ls          List running compose projects
  pause       Pause services
  port        Print the public port for a port binding.
  ps          List containers
  pull        Pull service images
  push        Push service images
  restart     Restart containers
  rm          Removes stopped service containers
  run         Run a one-off command on a service.
  start       Start services
  stop        Stop services
  top         Display the running processes
  unpause     Unpause services
  up          Create and start containers
  version     Show the Docker Compose version information

出现上述,说明安装成功了。

然后创建文件夹,images,在里边将我们的docker镜像放进去(先做好dockerfile,然后在有网络的主机上生成镜像文件,然后将镜像文件打包)。
下面是一个dockerfile文件示例:

#FROM openjdk:11.0-jre-slim
FROM ubuntu:20.04

EXPOSE 18080/tcp
EXPOSE 5060/tcp
EXPOSE 5060/udp
EXPOSE 6379/tcp
EXPOSE 18081/tcp
EXPOSE 80/tcp
EXPOSE 1935/tcp
EXPOSE 554/tcp
EXPOSE 554/udp
EXPOSE 30000-30500/tcp
EXPOSE 30000-30500/udp

ENV LC_ALL zh_CN.UTF-8

RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list \
    && sed -i '/#/d' /etc/apt/sources.list \
    && sed -i '/^$/d' /etc/apt/sources.list \
    && echo "deb http://security.ubuntu.com/ubuntu xenial-security main" >> /etc/apt/sources.list \
    && echo "deb http://mirrors.aliyun.com/ubuntu/ xenial universe" >> /etc/apt/sources.list \
    && echo "deb http://mirrors.aliyun.com/ubuntu/ bionic universe" >> /etc/apt/sources.list \
    && echo "APT::Acquire::Retries \"50\";" > /etc/apt/apt.conf.d/80-retries \
    && echo -e "\n----- Adding utilites -----" \
    &&   export DEBIAN_FRONTEND=noninteractive &&\
        apt-get update && \
        apt-get install -y --no-install-recommends ca-certificates openjdk-11-jre ffmpeg language-pack-zh-hans ca-certificates openssl vim net-tools dstat  tcpdump iputils-ping iproute2 rsync \
        software-properties-common \
        sshpass \
        telnet \
        unzip \
        vim \
        wget \
        curl \
        zip \
       && \
        apt-get autoremove -y && \
        apt-get clean -y && \
        rm -rf /var/lib/apt/lists/*dic \
    && apt-get install -y openssl \
        libssl-dev \
    && apt-get -y clean \
    && apt-get -y autoremove --purge 


#COPY  ./opt /opt
WORKDIR /opt/wvp
#CMD ["sh", "run.sh"]

镜像文件夹创建好了以后,创建工作程序目录bin,将可执行文件以及依赖放进去,必须要保证可执行文件是可以启动的。
创建sql文件夹,将sql文件放进去(如果有数据库的话)
下面是一个sql文件案例:

-- MySQL dump 10.13  Distrib 8.0.27, for Linux (x86_64)
--
-- Host: 192.168.1.242    Database: wvp
-- ------------------------------------------------------
-- Server version	5.7.22

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!50503 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `device`
--

DROP TABLE IF EXISTS `device`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `device` (
  `deviceId` varchar(50) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  `manufacturer` varchar(255) DEFAULT NULL,
  `model` varchar(255) DEFAULT NULL,
  `firmware` varchar(255) DEFAULT NULL,
  `transport` varchar(50) DEFAULT NULL,
  `streamMode` varchar(50) DEFAULT NULL,
  `online` varchar(50) DEFAULT NULL,
  `registerTime` varchar(50) DEFAULT NULL,
  `keepaliveTime` varchar(50) DEFAULT NULL,
  `ip` varchar(50) NOT NULL,
  `createTime` varchar(50) NOT NULL,
  `updateTime` varchar(50) NOT NULL,
  `port` int(11) NOT NULL,
  `expires` int(11) NOT NULL,
  `subscribeCycleForCatalog` int(11) NOT NULL,
  `hostAddress` varchar(50) NOT NULL,
  `charset` varchar(50) NOT NULL,
  PRIMARY KEY (`deviceId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `device`
--

LOCK TABLES `device` WRITE;
/*!40000 ALTER TABLE `device` DISABLE KEYS */;
/*!40000 ALTER TABLE `device` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `device_alarm`
--

DROP TABLE IF EXISTS `device_alarm`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `device_alarm` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `deviceId` varchar(50) NOT NULL,
  `channelId` varchar(50) NOT NULL,
  `alarmPriority` varchar(50) NOT NULL,
  `alarmMethod` varchar(50) DEFAULT NULL,
  `alarmTime` varchar(50) NOT NULL,
  `alarmDescription` varchar(255) DEFAULT NULL,
  `longitude` double DEFAULT NULL,
  `latitude` double DEFAULT NULL,
  `alarmType` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `device_alarm`
--

LOCK TABLES `device_alarm` WRITE;
/*!40000 ALTER TABLE `device_alarm` DISABLE KEYS */;
/*!40000 ALTER TABLE `device_alarm` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `device_channel`
--

DROP TABLE IF EXISTS `device_channel`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `device_channel` (
  `channelId` varchar(50) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  `manufacture` varchar(50) DEFAULT NULL,
  `model` varchar(50) DEFAULT NULL,
  `owner` varchar(50) DEFAULT NULL,
  `civilCode` varchar(50) DEFAULT NULL,
  `block` varchar(50) DEFAULT NULL,
  `address` varchar(50) DEFAULT NULL,
  `parentId` varchar(50) DEFAULT NULL,
  `safetyWay` int(11) DEFAULT NULL,
  `registerWay` int(11) DEFAULT NULL,
  `certNum` varchar(50) DEFAULT NULL,
  `certifiable` int(11) DEFAULT NULL,
  `errCode` int(11) DEFAULT NULL,
  `endTime` varchar(50) DEFAULT NULL,
  `secrecy` varchar(50) DEFAULT NULL,
  `ipAddress` varchar(50) DEFAULT NULL,
  `port` int(11) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  `PTZType` int(11) DEFAULT NULL,
  `status` int(11) DEFAULT NULL,
  `longitude` double DEFAULT NULL,
  `latitude` double DEFAULT NULL,
  `streamId` varchar(50) DEFAULT NULL,
  `deviceId` varchar(50) NOT NULL,
  `parental` varchar(50) DEFAULT NULL,
  `hasAudio` bit(1) DEFAULT NULL,
  `createTime` varchar(50) NOT NULL,
  `updateTime` varchar(50) NOT NULL,
  PRIMARY KEY (`channelId`,`deviceId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `device_channel`
--

LOCK TABLES `device_channel` WRITE;
/*!40000 ALTER TABLE `device_channel` DISABLE KEYS */;
/*!40000 ALTER TABLE `device_channel` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `device_mobile_position`
--

DROP TABLE IF EXISTS `device_mobile_position`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `device_mobile_position` (
  `deviceId` varchar(50) NOT NULL,
  `channelId` varchar(50) NOT NULL,
  `deviceName` varchar(255) DEFAULT NULL,
  `time` varchar(50) NOT NULL,
  `longitude` double NOT NULL,
  `latitude` double NOT NULL,
  `altitude` double DEFAULT NULL,
  `speed` double DEFAULT NULL,
  `direction` double DEFAULT NULL,
  `reportSource` varchar(50) DEFAULT NULL,
  `geodeticSystem` varchar(50) DEFAULT NULL,
  `cnLng` varchar(50) DEFAULT NULL,
  `cnLat` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`deviceId`,`time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `device_mobile_position`
--

LOCK TABLES `device_mobile_position` WRITE;
/*!40000 ALTER TABLE `device_mobile_position` DISABLE KEYS */;
/*!40000 ALTER TABLE `device_mobile_position` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `gb_stream`
--

DROP TABLE IF EXISTS `gb_stream`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `gb_stream` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `app` varchar(255) NOT NULL,
  `stream` varchar(255) NOT NULL,
  `gbId` varchar(50) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  `longitude` double DEFAULT NULL,
  `latitude` double DEFAULT NULL,
  `streamType` varchar(50) DEFAULT NULL,
  `mediaServerId` varchar(50) DEFAULT NULL,
  `status` int(11) DEFAULT NULL,
  `createStamp` bigint(20) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `app` (`app`,`stream`),
  UNIQUE KEY `gbId` (`gbId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `gb_stream`
--

LOCK TABLES `gb_stream` WRITE;
/*!40000 ALTER TABLE `gb_stream` DISABLE KEYS */;
/*!40000 ALTER TABLE `gb_stream` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `log`
--

DROP TABLE IF EXISTS `log`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `log` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `type` varchar(50) NOT NULL,
  `uri` varchar(200) NOT NULL,
  `address` varchar(50) NOT NULL,
  `result` varchar(50) NOT NULL,
  `timing` bigint(20) NOT NULL,
  `username` varchar(50) NOT NULL,
  `createTime` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `log`
--

LOCK TABLES `log` WRITE;
/*!40000 ALTER TABLE `log` DISABLE KEYS */;
/*!40000 ALTER TABLE `log` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `media_server`
--

DROP TABLE IF EXISTS `media_server`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `media_server` (
  `id` varchar(255) NOT NULL,
  `ip` varchar(50) NOT NULL,
  `hookIp` varchar(50) NOT NULL,
  `sdpIp` varchar(50) NOT NULL,
  `streamIp` varchar(50) NOT NULL,
  `httpPort` int(11) NOT NULL,
  `httpSSlPort` int(11) NOT NULL,
  `rtmpPort` int(11) NOT NULL,
  `rtmpSSlPort` int(11) NOT NULL,
  `rtpProxyPort` int(11) NOT NULL,
  `rtspPort` int(11) NOT NULL,
  `rtspSSLPort` int(11) NOT NULL,
  `autoConfig` int(11) NOT NULL,
  `secret` varchar(50) NOT NULL,
  `streamNoneReaderDelayMS` int(11) NOT NULL,
  `rtpEnable` int(11) NOT NULL,
  `rtpPortRange` varchar(50) NOT NULL,
  `sendRtpPortRange` varchar(50) NOT NULL,
  `recordAssistPort` int(11) NOT NULL,
  `defaultServer` int(11) NOT NULL,
  `createTime` varchar(50) NOT NULL,
  `updateTime` varchar(50) NOT NULL,
  `hookAliveInterval` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `media_server_i` (`ip`,`httpPort`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `media_server`
--

LOCK TABLES `media_server` WRITE;
/*!40000 ALTER TABLE `media_server` DISABLE KEYS */;
/*!40000 ALTER TABLE `media_server` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `parent_platform`
--

DROP TABLE IF EXISTS `parent_platform`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `parent_platform` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `enable` int(11) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `serverGBId` varchar(50) NOT NULL,
  `serverGBDomain` varchar(50) DEFAULT NULL,
  `serverIP` varchar(50) DEFAULT NULL,
  `serverPort` int(11) DEFAULT NULL,
  `deviceGBId` varchar(50) NOT NULL,
  `deviceIp` varchar(50) DEFAULT NULL,
  `devicePort` varchar(50) DEFAULT NULL,
  `username` varchar(255) DEFAULT NULL,
  `password` varchar(50) DEFAULT NULL,
  `expires` varchar(50) DEFAULT NULL,
  `keepTimeout` varchar(50) DEFAULT NULL,
  `transport` varchar(50) DEFAULT NULL,
  `characterSet` varchar(50) DEFAULT NULL,
  `catalogId` varchar(50) NOT NULL,
  `ptz` int(11) DEFAULT NULL,
  `rtcp` int(11) DEFAULT NULL,
  `status` bit(1) DEFAULT NULL,
  `shareAllLiveStream` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`,`serverGBId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `parent_platform`
--

LOCK TABLES `parent_platform` WRITE;
/*!40000 ALTER TABLE `parent_platform` DISABLE KEYS */;
/*!40000 ALTER TABLE `parent_platform` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `platform_catalog`
--

DROP TABLE IF EXISTS `platform_catalog`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `platform_catalog` (
  `id` varchar(50) NOT NULL,
  `platformId` varchar(50) NOT NULL,
  `name` varchar(255) NOT NULL,
  `parentId` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `platform_catalog`
--

LOCK TABLES `platform_catalog` WRITE;
/*!40000 ALTER TABLE `platform_catalog` DISABLE KEYS */;
/*!40000 ALTER TABLE `platform_catalog` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `platform_gb_channel`
--

DROP TABLE IF EXISTS `platform_gb_channel`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `platform_gb_channel` (
  `channelId` varchar(50) NOT NULL,
  `deviceId` varchar(50) NOT NULL,
  `platformId` varchar(50) NOT NULL,
  `deviceAndChannelId` varchar(50) NOT NULL,
  `catalogId` varchar(50) NOT NULL,
  PRIMARY KEY (`deviceAndChannelId`,`platformId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `platform_gb_channel`
--

LOCK TABLES `platform_gb_channel` WRITE;
/*!40000 ALTER TABLE `platform_gb_channel` DISABLE KEYS */;
/*!40000 ALTER TABLE `platform_gb_channel` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `platform_gb_stream`
--

DROP TABLE IF EXISTS `platform_gb_stream`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `platform_gb_stream` (
  `platformId` varchar(50) NOT NULL,
  `app` varchar(255) NOT NULL,
  `stream` varchar(255) NOT NULL,
  `catalogId` varchar(50) NOT NULL,
  PRIMARY KEY (`platformId`,`app`,`stream`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `platform_gb_stream`
--

LOCK TABLES `platform_gb_stream` WRITE;
/*!40000 ALTER TABLE `platform_gb_stream` DISABLE KEYS */;
/*!40000 ALTER TABLE `platform_gb_stream` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `user_role`
--

DROP TABLE IF EXISTS `user_role`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `user_role` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `authority` varchar(50) NOT NULL,
  `createTime` varchar(50) NOT NULL,
  `updateTime` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `user_role`
--

LOCK TABLES `user_role` WRITE;
/*!40000 ALTER TABLE `user_role` DISABLE KEYS */;
INSERT INTO `user_role` VALUES (1,'admin','0','2021-04-13 14:14:57','2021-04-13 14:14:57');
/*!40000 ALTER TABLE `user_role` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `stream_proxy`
--

DROP TABLE IF EXISTS `stream_proxy`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `stream_proxy` (
  `type` varchar(50) NOT NULL,
  `app` varchar(255) NOT NULL,
  `stream` varchar(255) NOT NULL,
  `url` varchar(255) DEFAULT NULL,
  `src_url` varchar(255) DEFAULT NULL,
  `dst_url` varchar(255) DEFAULT NULL,
  `timeout_ms` int(11) DEFAULT NULL,
  `ffmpeg_cmd_key` varchar(255) DEFAULT NULL,
  `rtp_type` varchar(50) DEFAULT NULL,
  `mediaServerId` varchar(50) DEFAULT NULL,
  `enable_hls` bit(1) DEFAULT NULL,
  `enable_mp4` bit(1) DEFAULT NULL,
  `enable` bit(1) NOT NULL,
  `status` bit(1) NOT NULL,
  `enable_remove_none_reader` bit(1) NOT NULL,
  `createTime` varchar(50) NOT NULL,
  PRIMARY KEY (`app`,`stream`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `stream_proxy`
--

LOCK TABLES `stream_proxy` WRITE;
/*!40000 ALTER TABLE `stream_proxy` DISABLE KEYS */;
/*!40000 ALTER TABLE `stream_proxy` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `stream_push`
--

DROP TABLE IF EXISTS `stream_push`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `stream_push` (
  `app` varchar(255) NOT NULL,
  `stream` varchar(255) NOT NULL,
  `totalReaderCount` varchar(50) DEFAULT NULL,
  `originType` int(11) DEFAULT NULL,
  `originTypeStr` varchar(50) DEFAULT NULL,
  `createStamp` bigint(20) DEFAULT NULL,
  `aliveSecond` int(11) DEFAULT NULL,
  `mediaServerId` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`app`,`stream`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `stream_push`
--

LOCK TABLES `stream_push` WRITE;
/*!40000 ALTER TABLE `stream_push` DISABLE KEYS */;
/*!40000 ALTER TABLE `stream_push` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `user`
--

DROP TABLE IF EXISTS `user`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `roleId` int(11) NOT NULL,
  `createTime` varchar(50) NOT NULL,
  `updateTime` varchar(50) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `user_username_uindex` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `user`
--

LOCK TABLES `user` WRITE;
/*!40000 ALTER TABLE `user` DISABLE KEYS */;
INSERT INTO `user` VALUES (1,'admin','21232f297a57a5a743894a0e4a801fc3',1,'2021-04-13 14:14:57','2021-04-13 14:14:57');
/*!40000 ALTER TABLE `user` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2022-01-25 15:36:42

这两项做好以后,就可以做最重要的docker-compose.yml文件了。

version: "3"

services:
  db:
    image: mariadb:focal
    container_name: mariadb_wvp
    restart: always
    #    privileged: true
    ports:
      - 3306:3306
    environment:
      # 时区上海
      TZ: Asia/Shanghai
      # root 密码
      MYSQL_ROOT_PASSWORD: root
      # 初始化数据库(后续的初始化sql会在这个库执行)
      MYSQL_DATABASE: wvp
      # 映射端口
    ports:
      - 3306:3306
    volumes:
      # 数据挂载
      - /etc/localtime:/etc/localtime:ro
      - /opt/crystal/mysql/data/:/var/lib/mysql/
      # 配置挂载
      # - /opt/crystal/mysql/conf/:/etc/mysql/conf.d/
      # 初始化目录挂载,注意此处我只跑了这个挂载,只是为了说明其他配置不应该数据初始化
      - /opt/crystal/mysql/init/:/docker-entrypoint-initdb.d/
    command:
      # 将mysql8.0默认密码策略 修改为 原先 策略 (mysql8.0对其默认策略做了更改 会导致密码无法匹配)
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
  wvp:
    container_name: crystal
    image: wvp:v1.0
    restart: always
    entrypoint: /bin/bash /opt/wvp/run.sh
    depends_on:
      - db
    ports:
      - 18080:18080
      - 35060:35060
      - 5060:5060
      - 5060:5060/udp
      - 18081:18081
      - 80:80
      - 11935:1935
      - 554:554
      - 554:554/udp
      - 30000-30500:30000-30500
      - 30000-30500:30000-30500/udp
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /opt/crystal/app/opt:/opt
      - /opt/crystal/app/record:/opt/media/www/record/
  nginx:
    image: redis:bullseye
    container_name: redis
    restart: always
    ports:
      - 6379:6379
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /opt/crystal/redis/data:/data
    privileged: true

然后就可以做启动脚本了:

#!/bin/bash
# this script is to start
set -x
export DOCKER_CLIENT_TIMEOUT=500
export COMPOSE_HTTP_TIMEOUT=500
root_need() {
  if [[ $EUID -ne 0 ]]; then
    echo "Error:This script must be run as root!" 1>&2
    exit 1
  fi
}

# need root or sudoer privilege
root_need
#if [ -d "$base" ]; then
#  read -r -p "$base exists. Are You Sure to delete directory  $base? [Y/n] " input
#  case $input in
#  [yY][eE][sS] | [yY])
#    echo "Yes to  delete  rm -r $base"
#    rm -r $base
#    ;;
#
#  [nN][oO] | [nN])
#    echo "exit"
#    exit 1
#    ;;
#
#  *)
#    echo "Invalid input..."
#    exit 1
#    ;;
#  esac
#fi
# prepare folder for container
# docker stop flow-center postgres flow-web
# docker rm flow-center postgres flow-web
# rm -rf /opt/crystal  
docker rm -f crystal mariadb_wvp redis
rm -rf /opt/crystal/
if [ ! -f "/usr/local/bin/docker-compose" ];then
  echo "文件不存在"
  cp  docker-compose-linux-aarch64  /usr/local/bin/docker-compose
  chmod 755 /usr/local/bin/docker-compose
fi

mkdir -p /opt/crystal/app/record
mkdir -p /opt/crystal/mysql/data/ 
mkdir -p /opt/crystal/mysql/conf/ 
mkdir -p /opt/crystal/mysql/init/ 
 
mkdir -p /opt/crystal/app
cp -r opt /opt/crystal/app/
# cp *.jar /opt/crystal/app/wvp-pro.jar
cp sql/*.sql  /opt/crystal/mysql/init/
 
 


# sudo chown -R "${SUDO_USER}:${SUDO_USER}"  $base/
#检查镜像是否存在
if [[ "$(docker images -q mariadb:focal 2>/dev/null)" == "" ]]; then
  # do something
  docker load -i images/mariadb.docker
fi
if [[ "$(docker images -q wvp:v1.0 2>/dev/null)" == "" ]]; then
  # do something
  docker load -i images/wvp.docker
fi

if [[ "$(docker images -q redis:bullseye 2>/dev/null)" == "" ]]; then
  # do something
  docker load -i images/redis.docker
fi

docker-compose up -d

# 定时任务
# if [ -d "$base/postgres/crontab/" ]; then
#   #statements
#   rm -rf $base/crontab/
# fi
# mkdir -p $base/crontab/log/
# cp crontab/backup.sh $base/crontab/
# cp crontab/cron $base/crontab/
# sed -i '/backup.sh/d' /var/spool/cron/crontabs/root
# crontab $base/crontab/cron
# sudo chown -R "${SUDO_USER}:${SUDO_USER}"  /opt/crystal/

1、Install Docker Compose
2、Docker Compose v2

你可能感兴趣的:(编程技巧,工具,docker)