Docker【7】| 最全的Docker-compose应用部署

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: docker-compose常用应用部署

大家好,我是脚丫先生 (o^^o)

虽然,一直从事的是大数据和后端的工作。

只不过,大家委以重任,产品的交付都是我去完成yyds(差点没累死)。

小伙伴都知道,微服务和基础环境的搭建,会有各种环境的依赖,那无疑是一件很痛苦的事情。

针对这个问题】,我们必须找出来一个高效的处理方法,从而更加便捷的完成任务。

因此今天我就把多个的应用以docker-compose的形式告诉小伙伴们,大家可以根据自己

的需要进行编排,高效快速的完成产品交付,解放双手,势在必行
在这里插入图片描述

前言

只提供docker-compose文件没有提供镜像那就是大逆不道,午门斩首。

为了避免小伙伴们飙垃圾话,我把镜像也提供给大家,方便小伙伴们彻底解放十姑娘。

古之学者必有师。

希望带着大家漂进Docker的海洋、从此一去不复返~。
在这里插入图片描述

链接: https://pan.baidu.com/s/1Bz1VVL-eq_yZVh2G3_PMXw
提取码:yyds

小伙伴们,可以自行更改镜像的标签:

  • 1)把镜像tar包导入为镜像
docker load < 镜像.tar
  • 2) 更改镜像的标签
docker tag 2e25d8496557 xxxxx.com/abc-dev/arc:1334

2e25d8496557:IMAGE ID,可以用docker images 查看镜像ID

xxxxx.com:私有hub域名

abc-dev:项目名称

arc:镜像名称

1334:镜像版本号

下面我们进正式的进入一条龙服务。

(docker-compose应用容器的部署会持续更新,总结)

一、数据库相关

数据库的重要性不言而喻了,所谓两军交战,粮草先行。

数据库就好比粮草,它是我们去开发应用的根本,但是它的种类是多种多样的。

小伙伴可以根据自己的业务需求进行选择。

通过docker-compose快速搭建数据库,只需三秒,划时代的改变了传统的繁琐。
在这里插入图片描述

1.1、Docker Compose 部署 mysql

首先在自己确定的目录,比如/usr/local下。

新建mysql文件夹

之后在该mysql文件夹下编写docker-compose.yml。

(之后的容器部署,与mysql容器部署相同)

1)编写docker-compose.yml文件

[root@spark1 mysql]# vi docker-compose.yml 

version: '3.0'
services:
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    command:
      --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
      --sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    ports:
      - 3306:3306
    volumes:
      - ./log:/var/log/mysql
      - ./data:/var/lib/mysql
      - ./conf:/etc/mysql

注意: 在有网络的环境下,会去自己搜索镜像。

如果,在内网(没有网络),那么需要自己先去下载镜像,导入服务器里。

可以参考: 前言我的叙述,以及为小伙伴们准备的镜像tar包。

2)启动容器

[root@spark1 mysql]# docker-compose up -d

1.2、Docker Compose 部署 redis

1)编写docker-compose.yml文件

[root@spark1 redis]# vi docker-compose.yml 

version: '3.0'

services:
  redis:
    restart: always
    image: 10.1.119.12/gx/redis:5.0
    container_name: redis
    ports:
      - 6379:6379
    # 映射持久化目录
    volumes:
      - ./data:/data
    # requirepass:配置登录密码
    # 开启 appendonly 持久化
    command: "/usr/local/bin/redis-server --requirepass cetc@2021 --appendonly yes"

2)启动容器

[root@spark1 redis]# docker-compose up -d

1.3、Docker Compose 部署 postgresql

1)编写docker-compose.yml文件

[root@spark1 postgres]# vi docker-compose.yml 

version: '3.0'
services:
  postgres:
      restart: always
      image: 10.1.119.12/basic/postgres:11
      privileged: true  
      ports:
        - 5432:5432  
      environment:
        POSTGRES_PASSWORD: postgres  //密码
        PGDATA: /var/lib/postgresql/data/pgdata
      volumes:
        - ./pgData:/var/lib/postgresql/data/pgdata

2)启动容器

[root@spark1 postgresql]# docker-compose up -d

1.4、Docker Compose 部署 oracle

1)编写docker-compose.yml文件

[root@spark1 oracle]# vi docker-compose.yml 

version: '3.0'

services:
  oracle:
    container_name: oracle
    image: registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
    ports:
      - 1521:1521
    restart: alway

2)启动容器

[root@spark1 oracle]# docker-compose up -d

1.5、Docker Compose 部署 influxdb

1)编写docker-compose.yml文件

[root@spark1 influxdb]# vi docker-compose.yml 

version: '3.0'
services:
    influxdb:
      restart: always
      image: 10.1.119.12/basic/influxdb:1.8
      container_name: influxdb
      privileged: true
      ports:
        -  8083:8083
        -  8086:8086
      volumes:
        - ./data:/var/lib/influxdb/data
        - ./conf:/etc/influxdb

2)启动容器

[root@spark1 influxdb]# docker-compose up -d

1.6、Docker Compose 部署 neo4j

1)编写docker-compose.yml文件

[root@spark1 neo4j]# vi docker-compose.yml 

version: '3.0'
services:
  neo4j:
    container_name: neo4j
    image: spins/neo4j-community-apoc:3.5.5
    ports:
      - 17474:7474
      - 17687:7687
    restart: always
    volumes:
      - ./data:/var/lib/neo4j/data
      - ./logs:/var/lib/neo4j/logs
      - /tmp:/tmp
    deploy:
      resources:
        limits:
          cpus: '1.00'
          memory: 1024M
    logging:
      driver: "json-file"
      options:
        max-size: "50M"
        max-file: "10"
    environment:
      - NEO4J_AUTH=neo4j/123456

2)启动容器

[root@spark1 neo4j]# docker-compose up -d

1.7、Docker Compose 部署 opentsdb

1)编写docker-compose.yml文件

[root@spark1 openTSDB]# vi docker-compose.yml 

version: '3.0'
services:
  opentsdb-docker:
    image: petergrace/opentsdb-docker:latest
    container_name: opentsdb
    network_mode: "host"
    privileged: true 
    environment:
      - WAITSECS=30
    ports:
      - 4242:4242
    volumes:  
      - ./data:/data/hbase  # 数据所在目录
      - ./opentsdb/opentsdb.conf:/ect/opentsdb/opentsdb.conf  # 配置所在目录

2)启动容器

[root@spark1 openTSDB]# docker-compose up -d

1.8、Docker Compose 部署 sqlserver

1)编写docker-compose.yml文件

[root@spark1 sqlserver]# vi docker-compose.yml 

version: '3.0'
services:
  db:
    image: mcr.microsoft.com/mssql/server:2017-latest
    restart: always
    container_name: sqlserver
    environment:
      ACCEPT_EULA: Y
      SA_PASSWORD: cetc@2021
    ports:
      - 1433:1433
    volumes:
      - ./mssql:/var/opt/mssql

2)启动容器

[root@spark1 sqlserver]# docker-compose up -d

二、环境基础相关

1.1、Docker Compose 部署 tomcat

1)编写docker-compose.yml文件

[root@spark1 tomcat]# vi docker-compose.yml 

version: '3'
services:
  tomcat:
    restart: always
    image: tomcat
    container_name: tomcat
    ports:
      - 8080:8080

2)启动容器

[root@spark1 tomcat]# docker-compose up -d

1.2、Docker Compose 部署 minio

1)编写docker-compose.yml文件

[root@spark1 minio]# vi docker-compose.yml 

version: '3'
services:
  minio:
    image: minio/minio:latest
    restart: always
    container_name: myminio
    ports:
      - 9000:9000
    volumes:
      - /usr/local/dockers/minio/data:/data
      - /usr/local/dockers/minio/config:/root/.minio
    environment:
      MINIO_ACCESS_KEY: "minio"
      MINIO_SECRET_KEY: "minio123"
    command: server /data

2)启动容器

[root@spark1 minio]# docker-compose up -d

1.3、Docker Compose 部署 elasticsearch

1)编写docker-compose.yml文件

[root@spark1 elasticsearch]# vi docker-compose.yml 

version: '3.1'                          
services:
  elasticsearch:                                           #服务的名称
    image: elasticsearch:7.16.1                            #指定镜像的路径
    restart: always                                        #启动docker,自动运行当前容器
    container_name: elasticsearch                          #容器名称
    ports:                                                 #指定多个端口
      - 9200:9200                                          #映射的端口号
    environment:
      discovery.type: single-node

2)启动容器

[root@spark1 elasticsearch]# docker-compose up -d

1.4、Docker Compose 部署 ftp

1)编写docker-compose.yml文件

[root@spark1 ftp]# vi docker-compose.yml 

version: '3.1'
services:
    ftp:
      restart: always
      image: 10.1.119.12/gx/ftp:latest
      network_mode: "host"
      container_name: iot-ftp
      environment:
          PASV_MIN_PORT: 21100
          PASV_MAX_PORT: 21110
          PASV_ADDRESS: 172.19.161.40
          FTP_USER: ftpuser
          FTP_PASS: 123456
      ports:
        -  "31020:20"
        -  "31021:21"
        -  "31100-31110:21100-21110"
      volumes:
        -  ./vsftpd:/home/vsftpd

2)启动容器

[root@spark1 ftp]# docker-compose up -d

1.5、Docker Compose 部署 kafka

1)编写zookeeper的docker-compose.yml文件

[root@spark1 zookeeper]# vi docker-compose.yml 

version: '3.0'

services:
  zoo1:
    image: zookeeper:3.5.9
    restart: always
    ports:
      - 2181:2181
    volumes:
      - ./zookeeper1/data:/data
      - ./zookeeper1/zoo-log:/datalog
    environment:
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181

  zoo2:
    image: zookeeper:3.5.9
    restart: always
    ports:
      - 2182:2181
    volumes:
      - ./zookeeper2/data:/data
      - ./zookeeper2/zoo-log:/datalog
    environment:
      ZOO_MY_ID: 2
      ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181

  zoo3:
    image: zookeeper:3.5.9
    restart: always
    ports:
      - 2183:2181
    volumes:
      - ./zookeeper3/data:/data
      - ./zookeeper3/zoo-log:/datalog
    environment:
      ZOO_MY_ID: 3
      ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181

2)启动zookeeper容器

[root@spark1 zookeeper]# docker-compose up -d

3)编写kafka的docker-compose.yml文件

[root@spark1 kafka]# vi docker-compose.yml 

version: '3.0'

services:
  kafka1:
    image: kafka:0.11.0.1
    ports:
      - "9092:9092"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ADVERTISED_HOST_NAME: 172.16.119.11
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://172.16.119.11:9092    
      KAFKA_ZOOKEEPER_CONNECT: 172.16.119.11:2181,172.16.119.11:2182,172.16.119.11:2183 
      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_DELETE_TOPIC_ENABLE: true
    container_name: kafka1
    volumes:
      - /etc/localtime:/etc/localtime:ro
  kafka2:
    image: kafka:0.11.0.1
    ports:
      - "9093:9092"
    environment:
      KAFKA_BROKER_ID: 2
      KAFKA_ADVERTISED_HOST_NAME: 172.16.119.11                  
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://172.16.119.11:9093       
      KAFKA_ZOOKEEPER_CONNECT: 172.16.119.11:2181,172.16.119.11:2182,172.16.119.11:2183 
      KAFKA_ADVERTISED_PORT: 9093
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_DELETE_TOPIC_ENABLE: true
    container_name: kafka2
    volumes:
      - /etc/localtime:/etc/localtime:ro
  kafka3:
    image: kafka:0.11.0.1
    ports:
      - "9094:9092"
    environment:
      KAFKA_BROKER_ID: 3
      KAFKA_ADVERTISED_HOST_NAME: 172.16.119.11
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://172.16.119.11:9094
      KAFKA_ZOOKEEPER_CONNECT: 172.16.119.11:2181,172.16.119.11:2182,172.16.119.11:2183
      KAFKA_ADVERTISED_PORT: 9094
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_DELETE_TOPIC_ENABLE: true
    container_name: kafka3
    volumes:
      - /etc/localtime:/etc/localtime:ro

4)启动kafka容器

[root@spark1 kafka]# docker-compose up -d

1.6、Docker Compose 部署 datax-web

1)编写datax-web的docker-compose.yml文件

[root@spark1 datax-web]# vi docker-compose.yml 

version: '3.0'
services:
  dataxweb-admin:
    image: 10.1.119.12/gx/iot-datax-admin:latest
    network_mode: host
    restart: always
    container_name: "dataxweb-admin"
    environment:
      REGISTER: "true"
      server.port: "9527"
      MYSQL_USERNAME: "root"
      MYSQL_PASSWORD: "123456"
      MYSQL_IP_PORT: "172.16.117.171:3306"
      MYSQL_DB_NAME: "datax_web"
    command: []
  dataxweb-executor:
    image: 10.1.119.12/gx/dataxweb/executor:iot
    network_mode: host
    restart: always
    container_name: "dataxweb-executor"
    depends_on:
      - dataxweb-admin
    environment:
      REGISTER: "true"
      DATAX_WEB_URL: "http://172.16.117.171:9527" #dataxweb-admin地址
    command: []

2)启动datax-web容器

[root@spark1 kafka]# docker-compose up -d

注意: datax_web数据库,如果需要,可以找我。

1.7、Docker Compose 部署 nacos

1)编写nacos的docker-compose.yml文件

[root@spark1 nacos]# vi docker-compose.yml 

version: '2'
services:
    nacos:
      image: nacos/nacos-server:latest
      container_name: nacos-standalone-mysql
      network_mode: "host"
      environment:
          PREFER_HOST_MODE: "hostname"
          MODE: "standalone"
      volumes:
        - ./application.properties:/home/nacos/conf/application.properties
        - ./standalone-logs/:/home/nacos/logs
      ports:
        - "8848:8848"
      restart: on-failure

nacos文件夹下建立:application.properties

server.contextPath=/nacos
server.servlet.contextPath=/nacos
server.port=8848
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i
server.tomcat.basedir=
nacos.security.ignore.urls=/,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/login,/v1/console/health/**,/v1/cs/**,/v1/ns/**,/v1/cmdb/**,/actuator/**,/v1/console/server/**
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://172.10.10.71:3306/ry-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=cetc@2021

2)启动datax-web容器

[root@spark1 nacos]# docker-compose up -d

三、前端相关

1.1、nginx

1)编写nginx的docker-compose.yml文件

[root@spark1 nginx]# vi docker-compose.yml 

version: '3.0'

services:
  nginx:
    restart: always
    image: nginx
    container_name: nginx
    ports:
      - 80:80
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./log:/var/log/nginx
      - ./html:/usr/share/nginx/html

注意:nginx.conf需要根据自己的情况,进行修改。

nginx.conf

user  root;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;
        client_max_body_size 500M;
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }

 
        location /api/ {
            proxy_set_header Host $host;
            proxy_pass http://192.168.239.129:50200/;
            #add_header 'Access-Control-Allow-Origin' '*';
            #add_header 'Access-Control-Allow-Credentials' 'true';
            #add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS';
        }
          
        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

     }

}

2)启动datax-web容器

[root@spark1 nginx]# docker-compose up -d

总结 docker-compose应用容器部署。都是以下三步骤:

(1)在自己确定的目录,新建对应容器的文件夹。

比如部署mysql,那么在自己确定的目录下,新建mysql文件夹。

(2)在新建的文件夹下,编写对应容器的docker-compose.yml文件。

(3)最后以docker-compose up -d 命令启动容器。

在这里插入图片描述
之后的docker-compose应用容器会持续更新。

祝各位终有所成,收获满满!

相关文章
|
8天前
|
监控 文件存储 Docker
实现NAS远程下载,Docker部署qBittorrent、Transmission、贝锐花生壳
与电脑不同,NAS通常7x24小时运行,便于下载资源,解决BT/PT下载需长时间在线的问题。因此,qBittorrent、Transmission等下载管理工具成为NAS用户的必备应用。通过Docker,用户可在多种NAS设备上快速安装这些工具,并通过局域网IP地址+端口访问。然而,缺乏公网IPv4地址导致远程访问困难,贝锐花生壳提供了解决方案,允许无公网IP情况下通过固定域名远程访问NAS中的下载工具,简化了部署过程,使用户能随时随地控制家中的下载任务。
96 33
实现NAS远程下载,Docker部署qBittorrent、Transmission、贝锐花生壳
|
14天前
|
弹性计算 运维 持续交付
探索Docker容器化技术及其在生产环境中的应用
探索Docker容器化技术及其在生产环境中的应用
64 5
|
1天前
|
应用服务中间件 Docker 容器
docker应用部署---Tomcat的部署配置
这篇文章介绍了如何使用Docker部署Tomcat服务器,包括搜索和拉取Tomcat镜像、创建容器并设置端口映射和目录映射,以及如何创建一个HTML页面并使用外部机器访问Tomcat服务器。
docker应用部署---Tomcat的部署配置
|
1天前
|
关系型数据库 MySQL 数据安全/隐私保护
docker应用部署---MySQL的部署配置
这篇文章介绍了如何使用Docker部署MySQL数据库,包括搜索和拉取MySQL镜像、创建容器并设置端口映射和目录映射、进入容器操作MySQL,以及如何使用外部机器连接容器中的MySQL。
docker应用部署---MySQL的部署配置
|
1天前
|
前端开发 应用服务中间件 nginx
docker部署本地前端项目思路
docker部署本地前端项目思路
16 7
|
1天前
|
应用服务中间件 nginx Docker
docker应用部署---nginx部署的配置
这篇文章介绍了如何使用Docker部署Nginx服务器,包括搜索和拉取Nginx镜像、创建容器并设置端口映射和目录映射,以及如何创建一个测试页面并使用外部机器访问Nginx服务器。
|
7天前
|
存储 Kubernetes Cloud Native
部署Kubernetes客户端和Docker私有仓库的步骤
这个指南涵盖了部署Kubernetes客户端和配置Docker私有仓库的基本步骤,是基于最新的实践和工具。根据具体的需求和环境,还可能需要额外的配置和调整。
21 1
|
13天前
|
Devops jenkins 持续交付
DevOps实践:构建和部署一个Docker化的应用
【9月更文挑战第14天】在当今快节奏的软件开发领域,DevOps已经成为提升效率、加速交付的关键。本文将引导你理解DevOps的核心概念,并通过一个实际的示例—构建和部署一个Docker化的应用—来深入探讨其实践方法。我们将从简单的应用出发,逐步实现Docker容器化,并最终通过CI/CD流水线自动化部署过程。这不仅是对DevOps流程的一次实操演练,也是对现代软件开发理念的一次深刻体验。
|
1天前
|
运维 监控 Docker
掌握 Docker Compose:简化你的多容器应用部署
在微服务架构和容器化技术日益普及的今天,管理多个容器的部署和运维变得颇具挑战。Docker Compose 通过一个 YAML 文件定义和运行多容器 Docker 应用,极大地简化了这一过程。本文介绍了 Docker Compose 的基本概念、使用方法及其优势,包括简化配置、一键部署、易于版本控制和环境一致性。通过具体示例展示了如何安装 Docker Compose、创建 `docker-compose.yml` 文件并管理服务。掌握 Docker Compose 可显著提高开发效率和应用运维质量。
|
1月前
|
运维 Java Devops
阿里云云效操作报错合集之部署docker时遇到报错,该怎么办
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。