公司服务器docker-compose.yml详解

version: "3.3"

services:

  redis:

    container_name: redis

    image: redis:5.0.7

    environment:

      - TZ=Asia/Shanghai

    volumes:

      - /home/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf  ###外层只有目录,没有配置文件

      - /home/redis/data/:/data/

      - /home/redis/logs/:/var/log/redis/

    command: redis-server --requirepass modo@1234

    ports:

      - "6379:6379"

    restart: always

    networks:

      - webnet

  mysql:

    container_name: mysql

    image: mysql:5.7

    ports:

      - "3306:3306"

    volumes:    

      - /home/mysql/conf:/etc/mysql/conf.d               ###外层只有目录,没有配置文件

      - /home/mysql/logs:/logs

      - /home/mysql/data:/var/lib/mysql

    command: [

          'mysqld',

          '--innodb-buffer-pool-size=80M',

          '--character-set-server=utf8mb4',

          '--collation-server=utf8mb4_unicode_ci',

          '--default-time-zone=+8:00',

          '--lower-case-table-names=1'

        ]

    environment:

      # root 密码

      MYSQL_ROOT_PASSWORD: MagicBean@12345

      MYSQL_USER: 'modo'

      MYSQL_PASS: 'modo@1234'

    restart: always

    networks:

      - webnet

  nginx:

    container_name: nginx

    image: nginx

    environment:

      - TZ=Asia/Shanghai

    volumes:

      - /home/data/nginx/conf:/etc/nginx

      - /home/data/nginx/html:/usr/share/nginx/html

      - /home/data/nginx/logs:/var/log/nginx

    ports:

      - "8001:8001"

      - "9876:9876"

      - "9877:9877"

      - "10004:10004"

      - "10005:10005"

    restart: always

    networks:

      - webnet

  minio:

    container_name: minio

    image: minio/minio

    environment:

      MINIO_ROOT_USER: root

      MINIO_ROOT_PASSWORD: wangtao4486831

    logging:

      options:

        max-size: "50M"

        max-file: "10"

      driver: json-file

    ports:

      - "9000:9000"

      - "9001:9001"

    volumes:

      - /home/minio/data:/data

      - /home/minio/config:/root/.minio

    command: server /data          #########这句话是很重要的

    restart: always

    networks:

      - webnet  

  nexus:

    image: sonatype/nexus3:latest

    container_name: nexus

    privileged: true

    user: root

    volumes:

      - /home/nexus/nexus-data:/nexus-data

    ports:

      - "8081:8081"

    restart: always

    networks:

      - webnet

  # gitea:

    # container_name: gitea

    # image: gitea/gitea:1.12.4

    # environment:

      # - USER_UID=1000

      # - USER_GID=1000

      # - DB_TYPE=mysql

      # - DB_HOST=27.128.233.35:3306

      # - DB_NAME=gitea

      # - DB_USER=root

      # - DB_PASSWD=modo_rds@2023

    # ports:

      # - "3000:3000"

    # volumes:

      # - /home/gitea/data:/data

      # - /etc/timezone:/etc/timezone:ro

      # - /etc/localtime:/etc/localtime:ro

    # restart: always

    # networks:

      # - webnet

  dip_terminal:

    container_name: dip_terminal

    build:

      context: ../data/dip_terminal

      dockerfile: Dockerfile

    environment:

      TZ: Asia/Shanghai

    ports:

      - "10031:8060"

    restart: always

    networks:

      - webnet

  water_manager:

    container_name: water_manager

    build:

      context: ../data/water_manager

      dockerfile: Dockerfile

    environment:

      TZ: Asia/Shanghai

    ports:

      - "10041:9200"

    restart: always

    volumes:

      - /home/order.ftl:/home/order.ftl

    networks:

      - webnet

  ftp:

    restart: always

    image: fauria/vsftpd:latest

    container_name: ftp

    privileged: true

    ports:

      - '2020:20'

      - '2121:21'

      - '21100-21110:21100-21110'

    volumes:

      - /home/ftp:/home/vsftpd

    environment:

      FTP_USER: modo               # 用户名

      FTP_PASS: modo@123             # 密码

      PASV_ADDRESS: 192.168.1.100    # 外网访问地址

      PASV_MIN_PORT: 21100

      PASV_MAX_PORT: 21110

      PASV_ENABLE: 'YES'

      PASV_ADDR_RESOLVE: 'YES'

      PASV_PROMISCUOUS: 'YES'

  generator:

    container_name: generator

    build:

      context: ./generator

      dockerfile: Dockerfile

    environment:

      TZ: Asia/Shanghai

    ports:

      - "10006:10006"

    restart: always

    networks:

      - webnet

  datax-admin:

    container_name: datax-admin

    build:

      context: ./datax

      dockerfile: Dockerfile-admin

    environment:

      TZ: Asia/Shanghai

    ports:

      - "10007:9888"

    restart: always

    networks:

      - webnet

  datax-executor:

    container_name: datax-executor

    build:

      context: ./datax

      dockerfile: Dockerfile-executor

    environment:

      TZ: Asia/Shanghai

    ports:

      - "10008:10008"

    restart: always

    networks:

      - webnet

  gitlab:

    image: 'twang2218/gitlab-ce-zh'

    container_name: "gitlab"

    restart: always

    privileged: true

    hostname: 192.168.1.100:7080

    environment:

      gitlab_omnibus_config: |

        external_url 'http://192.168.1.100:7080'

        gitlab_rails["time_zone"] = 'Asia/Shanghai'

        gitlab_rails['gitlab_ssh_host'] = '192.168.1.100'

        gitlab_rails['gitlab_shell_ssh_port'] = 7022

    ports:

      - '7080:7080'

      - '7043:443'

      - '7022:22'

    volumes:

      - /home/gitlab/etc:/etc/gitlab

      - /home/gitlab/log:/var/log/gitlab

      - /home/gitlab/opt:/var/opt/gitlab

  chronic_disease_server:

    container_name: chronic_disease_server

    build:

      context: ../data/chronic_disease_server

      dockerfile: Dockerfile

    environment:

      TZ: Asia/Shanghai

    ports:

      - "9003:9200"

    volumes:

      - /etc/localtime:/etc/localtime

    restart: always

    networks:

      - webnet

networks:

  webnet:

### Docker Compose 文件 (`docker-compose.yml`) 配置解析 `docker-compose.yml` 是一种 YAML 格式的配置文件,用于定义多容器应用的服务、网络和卷。通过该文件可以轻松管理多个容器之间的依赖关系并简化部署流程。 以下是 `docker-compose.yml` 的基本结构以及如何将其应用于搭建个人网盘服务: #### 基本结构 一个典型的 `docker-compose.yml` 文件通常包含以下几个部分: 1. **services**: 定义应用程序中的各个服务及其运行参数。 2. **volumes**: 定义数据持久化存储的位置。 3. **networks**: 定义服务间通信所需的自定义网络。 4. **other configurations**: 如环境变量、端口映射等额外设置。 #### 示例配置 假设要使用 Nextcloud 作为个人网盘服务,以下是一个完整的 `docker-compose.yml` 示例[^2]: ```yaml version: '3' services: db: image: mariadb:latest restart: always environment: MYSQL_ROOT_PASSWORD: your_root_password MYSQL_DATABASE: nextcloud MYSQL_USER: nextcloud MYSQL_PASSWORD: your_user_password volumes: - ./db:/var/lib/mysql app: image: nextcloud:latest ports: - "8080:80" depends_on: - db restart: always volumes: - ./data:/var/www/html environment: - MYSQL_HOST=db - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - MYSQL_PASSWORD=your_user_password ``` #### 解析 - **版本声明**:`version: '3'` 表明此文件遵循的是 Docker Compose 版本 3 的语法规范。 - **数据库服务 (db)**:这里选择了 MariaDB 数据库来支持 Nextcloud 应用程序的数据存储需求。设置了必要的 MySQL 用户名、密码和其他初始化参数,并挂载了一个本地目录 `/db` 到容器内的默认路径 `/var/lib/mysql` 中以便于数据持久化。 - **Nextcloud 应用服务 (app)**:指定了官方发布的 Nextcloud 镜像;开放主机上的端口 `8080` 映射到容器内部的 HTTP 默认端口 `80` 上;指定其启动顺序需等待数据库准备完毕后再继续执行(`depends_on`);同样也进行了数据绑定操作以保存上传文件等内容至宿主机磁盘上。 #### 使用方法 完成上述配置之后,在同一目录下运行如下命令即可快速启动整个项目: ```bash docker-compose up -d ``` 这会以后台模式启动所有定义好的服务实例。 如果需要查看当前环境中已有的镜像列表,则可以通过以下指令实现: ```bash docker-compose images ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值