Docker-compose LNAMP

环境说明

EMQX集群三台虚拟机:2台做EMQX集群192.168.0.130-131,1台安装NGINX负载192.168.0.12;

WEB集群(2个HTTP容器和1个NGINX容器)和MARIADB安装台一台虚拟机上192.168.0.128

version: "3.3"
services:
#####################container##############3
volumes:
  app-dmsdb-data:
networks:
  smartcard-net:
    ipam:
      driver: default
      config:
        - subnet: 10.10.11.0/24
          gateway: 10.10.11.1

bridge模式下(HOST模式不需要),yml格式文件如上所示

一、集群

1.1 EMQX集群(Host模式)

1.1.1 节点1:EMQX1配置

version: '3'
services:
  emqx2:
    image: emqx/emqx:4.2.3
    environment:
    - EMQX_NAME=emqx02
    - EMQX_HOST=192.168.47.131
    - EMQX_CLUSTER__DISCOVERY=static
    - EMQX_CLUSTER__STATIC__SEEDS=emqx01@192.168.47.130, emqx02@192.168.47.131
    - EMQX_DASHBOARD__DEFAULT_USER__LOGIN=liubei
    - EMQX_DASHBOARD__DEFAULT_USER__PASSWORD=liubei@2021
    network_mode: "host"
    restart: always 
    healthcheck:
      test: ["CMD", "/opt/emqx/bin/emqx_ctl", "status"]
      interval: 5s
      timeout: 25s
      retries: 5

1.1.2 节点2:EMQX2配置

version: '3'
services:
  emqx1:
    image: emqx/emqx:4.2.3
    environment:
    - EMQX_NAME=emqx01
    - EMQX_HOST=192.168.47.130
    - EMQX_CLUSTER__DISCOVERY=static
    - EMQX_CLUSTER__STATIC__SEEDS=emqx01@192.168.47.130, emqx02@192.168.47.131
    - EMQX_DASHBOARD__DEFAULT_USER__LOGIN=liubei
    - EMQX_DASHBOARD__DEFAULT_USER__PASSWORD=liubei@2021
    network_mode: "host"
    restart: always 
    healthcheck:
      test: ["CMD", "/opt/emqx/bin/emqx_ctl", "status"]
      interval: 5s
      timeout: 25s
      retries: 5

1.1.3 节点3:nginx负载

version: "3.3"
services:        
  mqtt_lsb:
    container_name: mqtt_lsb
    image: nginx:latest  
    restart: always   
    volumes: 
     - ./dms/nginx_emqx.conf:/etc/nginx/nginx.conf 
    network_mode: "host" 

nginx.conf配置文件

user  nginx;
worker_processes  auto;

events {
    worker_connections 1024;
}
stream {  
    upstream mqtt_lsb {
        server 192.168.0.130:1883 weight=1 max_fails=3 fail_timeout=30s;
        server 192.168.0.131:1883 weight=1 max_fails=3 fail_timeout=30s;
    } 
    server {
        listen 1883;      
        proxy_buffer_size 8k;
    	tcp_nodelay on;
        proxy_pass mqtt_lsb;
    }
}

1.1.4 验证

1.2 WEB集群(Bridge模式)

1.2.1 容器1:web集群

  dms_cluster1:
   image: dms_cluster1
   build:
      context: ./dms
      dockerfile: Dockerfile_http
   container_name: dms_cluster1
   networks:
      - smartcard-net
   environment:
     - ALLOW_OVERRIDE=true
   ports:
     - "5881:80"
   links:
     - dms_db
     - mqtt-station
   volumes:
     - ./dms/000-default.conf:/etc/apache2/sites-enabled/000-default.conf
     - ./dms/php.ini:/usr/local/etc/php/php.ini
     - ./dms/swoole.ini:/etc/php.d/swoole.ini
     - ./dms/app:/var/www/html/
     - ./dms/logs/http1_logs:/var/www/logs/   

1.2.2 容器2:web集群

  dms_cluster2:
   image: dms_cluster2
   build:
      context: ./dms
      dockerfile: Dockerfile_http
   container_name: dms_cluster2
   networks:
      - smartcard-net
   environment:
     - ALLOW_OVERRIDE=true
   ports:
     - "5882:80"
   links:
     - dms_db
     - mqtt-station
   volumes:
     - ./dms/000-default.conf:/etc/apache2/sites-enabled/000-default.conf
     - ./dms/php.ini:/usr/local/etc/php/php.ini
     - ./dms/swoole.ini:/etc/php.d/swoole.ini
     - ./dms/app:/var/www/html/
     - ./dms/logs/http2_logs:/var/www/logs/

1.2.2 容器3:web负载nginx

  dms_lsb:
    container_name: dms_lsb
    image: nginx:latest
    ports: 
      - "5888:80"
    privileged: true
    volumes: 
     - ./dms/nginx_dms.conf:/etc/nginx/nginx.conf
    networks:
      - smartcard-net   
    links:     
     - dms_cluster1   
     - dms_cluster2

nginx.conf

events {
    worker_connections 1024;
}
http{  
  upstream dms_lsb {
    server dms_cluster1:80;
    server dms_cluster2:80;
  } 
  server {
    listen 80;
    server_name dms_lsb; 
    location / {
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_buffering off;
      proxy_pass http://dms_lsb;
    }
  }
}

1.2.3 验证

web界面操作5次,查看两个容器日志,一次执行了3次,一个执行了2次

1.3 整体环境

1.3.1 yml

由于MEQX集群以HOST方式部署,YML中不在link容器:mqtt-station

version: "3.3"
services:        
  dms_db:
    *************************
  dms_lsb:
    *************************
  dms_cluster1:
    ************************* 
  dms_cluster2:
    *************************   
  dms_cron:
    *************************
  dms_mqtt:
    *************************
  dms_swoole:
    *************************
volumes:
  app-dmsdb-data:
networks:
  smartcard-net:
    ipam:
      driver: default
      config:
        - subnet: 10.10.11.0/24
          gateway: 10.10.11.1

1.3.2 测试

1S发送一条消息,发100条消息,查看日志

关闭EMQX集群中其中一个节点,测试是否还正常运行

依旧还是收到了100条消息

关闭一个节点后,再启动这个节点,测试中间关闭启动对数据影响

还是能完成收到100条数据

二、非集群

2.1 yml

version: "3.3"
services:
  mqtt-station:
    *************************
  dms_db:
    *************************
  dms:
    *************************
  dms_cron:
    *************************
  dms_mqtt:
    *************************
  dms_swoole:
    *************************
volumes:
  app-dmsdb-data:
networks:
  smartcard-net:
    ipam:
      driver: default
      config:
        - subnet: 10.10.11.0/24
          gateway: 10.10.11.1

三、容器配置

3.1 文件初始化sh_file.sh

#!/bin/sh
#如果没有tmp_dir目录则创建

cron_dir="./logs/cron_logs"
if [ ! -d $cron_dir ]; then    
    mkdir -p -m 777 $cron_dir
fi
    
http_dir="./logs/http_logs"
if [ ! -d $http_dir ]; then    
    mkdir -p -m 777 $http_dir  
fi
    
mqtt_dir="./logs/mqtt_logs"
if [ ! -d $mqtt_dir ]; then    
    mkdir -p -m 777 $mqtt_dir   
fi
    
swoole_dir="./logs/swoole_logs"
if [ ! -d $swoole_dir ]; then    
    mkdir -p -m 777 $swoole_dir    
fi

chmod -R 777 *
chmod 644 my.cnf
修改文件属性:chmod 700 sh_file.sh

3.2 数据库容器初始化

3.2.1 导出数据库表格

[root@localhost dms]# docker-compose exec dms_db bash
root@c88eda6f9a74:/# mysqldump -uroot -p***** -d pyrk_zt > db.sql

将容器中的表结构拷贝到主机当前目录

[root@localhost lamp]# docker cp dms_db:/db.sql .

3.2.2 导入并初始化数据

将当前目录下文件拷贝到容器根目录中

[root@localhost lamp]# docker cp  db.sql dms_db:/

进入容器

[root@localhost lamp]# docker-compose exec dms_db bash
root@c88eda6f9a74:/# mysql -uroot -p******

创建并进入数据库

MariaDB [(none)]> create database pyrk_zt;
MariaDB [(none)]> use pyrk_zt;

导入数据库文件

MariaDB [pyrk_zt]> source /db.sql;

初始用户信息

MariaDB [pyrk_zt]> INSERT INTO userlogin_info VALUES (1,'admin','c4ca4238a0b923820dcc509a6f75849b');

更新环境配置信息

MariaDB [pyrk_zt]> INSERT INTO pyrk_config VALUES (1,'docker_mode',0, '');

附件1:容器yml

附件1.1 EMQX:mqtt-station

  mqtt-station:
    image: emqx/emqx:5.0.3
    container_name: mqtt-station
    networks:
      - smartcard-net
    depends_on:
      - smartcard-db
    ports:
      - "1883:1883"
      # - "8083:8083"
      # - "8883:8883"
      # - "8084:8084"
      - "18083:18083"
    environment:
      - TZ=Asia/Shanghai
      - EMQX_ALLOW_ANONYMOUS=true
      # - EMQX_AUTH__PGSQL__USERNAME=postgres
      # - EMQX_AUTH__PGSQL__PASSWORD=1q3e5t7u!
      # - EMQX_AUTH__PGSQL__DATABASE=smartcard
      # - "EMQX_AUTH__PGSQL__SERVER=smartcard-db:5432"
      # - EMQX_AUTH__PGSQL__POOL=8
      # - EMQX_AUTH__PGSQL__ENCODING=utf8
      # - "EMQX_AUTH__PGSQL__PASSWORD_HASH=sha256"
      # - "EMQX_AUTH__PGSQL__AUTH_QUERY=select mqtt_password from station where mqtt_user = '%u' limit 1"
      # - EMQX_LOADED_PLUGINS="emqx_recon,emqx_retainer,emqx_management,emqx_dashboard,emqx_auth_pgsql"
    restart: always
    logging: 
      #日志驱动
      driver: "json-file"
      options:
        #日志大小 
        max-size: "1g"
        #日志数量 
        max-file: "3"

附件1.2 Mariadb:dms_db

  dms_db:
    image: mariadb
    container_name: dms_db
    networks:
      - smartcard-net
    ports:
      - "3306:3306"
    volumes:
      - app-dmsdb-data:/var/lib/mysql
      - ./dms/my.cnf:/etc/mysql/my.cnf
      # - ./dms/initdb.d:/docker-entrypoint-initdb.d
    environment:
      MYSQL_ROOT_PASSWORD: "1q3e5t7u!"

附件1.3 WEB:dms

  dms:
   image: dms
   build:
      context: ./dms
      dockerfile: Dockerfile_http
   container_name: dms
   networks:
      - smartcard-net
   environment:
     - ALLOW_OVERRIDE=true
   ports:
     - "5888:80"
   links:
     - dms_db
     - mqtt-station
   volumes:
     - ./dms/000-default.conf:/etc/apache2/sites-enabled/000-default.conf
     - ./dms/php.ini:/usr/local/etc/php/php.ini
     - ./dms/swoole.ini:/etc/php.d/swoole.ini
     - ./dms/app:/var/www/html/
     - ./dms/logs/http_logs:/var/www/logs/

附件1.4 定时任务:dms_cron

  dms_cron:
   image: dms_cron
   build:
      context: ./dms
      dockerfile: Dockerfile_cron
   container_name: dms_cron
   networks:
      - smartcard-net
   environment:
     - ALLOW_OVERRIDE=true
   links:
     - dms_db
     - mqtt-station
     - dms
   volumes:
     - ./dms/php.ini:/usr/local/etc/php/php.ini
     - ./dms/swoole.ini:/etc/php.d/swoole.ini
     - ./dms/app:/var/www/html/
     - ./dms/logs/cron_logs:/var/www/logs/

附件1.5 MQTT进程池:dms_mqtt

  dms_mqtt:
   image: dms_mqtt
   build:
      context: ./dms
      dockerfile: Dockerfile_mqtt
   container_name: dms_mqtt
   networks:
      - smartcard-net
   environment:
     - ALLOW_OVERRIDE=true
   links:
     - dms_db
     - mqtt-station
     - dms
   volumes:
     - ./dms/php.ini:/usr/local/etc/php/php.ini
     - ./dms/swoole.ini:/etc/php.d/swoole.ini
     - ./dms/app:/var/www/html/
     - ./dms/logs/mqtt_logs:/var/www/logs/

附件1.6 UDP进程池:dms_swoole

  dms_swoole:
   image: dms_swoole
   build:
      context: ./dms
      dockerfile: Dockerfile_swoole
   container_name: dms_swoole
   networks:
      - smartcard-net
   environment:
     - ALLOW_OVERRIDE=true
   ports:
     - 5988:5988/udp
   links:
     - dms_db
     - mqtt-station
     - dms
   volumes:
     - ./dms/php.ini:/usr/local/etc/php/php.ini
     - ./dms/swoole.ini:/etc/php.d/swoole.ini
     - ./dms/app:/var/www/html/
     - ./dms/logs/swoole_logs:/var/www/logs/

附件2:Dockerfile

附件2.1 Dockerfile_cron

# FROM phpswoole/swoole:4.5.9-php7.4
FROM php:7.4

ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime
WORKDIR /var/www/html

COPY ./app /var/www/html

RUN sed -i "s@http://deb.debian.org@http://mirrors.aliyun.com@g" /etc/apt/sources.list
RUN cat /etc/apt/sources.list
RUN rm -Rf /var/lib/apt/lists/*

RUN apt-get update && apt-get install -y \
    cron \
    build-essential \
    libpng-dev \
    libjpeg62-turbo-dev \
    libfreetype6-dev \
    locales \
    libzip-dev \
    libmcrypt-dev \
    libonig-dev \
    zlib1g-dev \
    zip \
    jpegoptim optipng pngquant gifsicle \
    vim \
    unzip \
    git \
    graphviz \
    curl \
    supervisor \
    rsyslog


# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# install ext
RUN docker-php-ext-install mysqli opcache pdo pcntl

# COPY ./app/crontab /etc/cron.d/crontab

RUN echo "*/1 * * * * /usr/local/bin/php /var/www/html/api/timing/oper_pack_error.php" >> /etc/cron.d/crontab
RUN echo "*/10 * * * * /usr/local/bin/php /var/www/html/api/timing/oper_server_status_abnormal.php" >> /etc/cron.d/crontab
RUN echo "0 8 * * * /usr/local/bin/php /var/www/html/api/timing/oper_server_status_normal.php" >> /etc/cron.d/crontab
RUN echo "0 5 * * * /usr/local/bin/php /var/www/html/api/timing/oper_del_sys_email.php" >> /etc/cron.d/crontab
RUN echo "*/30 * * * * /usr/local/bin/php /var/www/html/api/timing/oper_sync_info.php" >> /etc/cron.d/crontab
# RUN echo "*/1 * * * * echo 'aaa' >> /tmp/test.txt " >> /etc/cron.d/crontab



# Give execution rights on the cron job
RUN chmod 0644 /etc/cron.d/crontab
# Apply cron job
RUN crontab /etc/cron.d/crontab
# Create the log file to be able to run tail
RUN touch /var/log/cron.log
CMD cron -f && tail -f /var/log/cron.log

附近2.2 Dockerfile_http

FROM php:7.1-apache

ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime


# RUN apk upgrade --update && apk add --no-cache autoconf m4 gcc libc-dev make
# WORKDIR /tmp/
# RUN wget https://github.com/swoole/swoole-src/archive/v2.0.6.tar.gz
# RUN tar zxvf v2.0.6.tar.gz 
# WORKDIR /tmp/swoole-src-2.0.6/
# RUN phpize
# RUN ./configure --with-php-config=/usr/local/bin/php-config
# RUN make && make install


WORKDIR /var/www/html

COPY ./app /var/www/html

COPY ./swoole-src-2.0.6 /usr/src/php/ext/swoole


# install ext
RUN docker-php-ext-install mysqli opcache pdo pcntl swoole

附近2.3 Dockerfile_mqtt

# FROM phpswoole/swoole:4.5.9-php7.4
FROM php:7.4

ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime
WORKDIR /var/www/html

COPY ./app /var/www/html

RUN sed -i "s@http://deb.debian.org@http://mirrors.aliyun.com@g" /etc/apt/sources.list
RUN cat /etc/apt/sources.list
RUN rm -Rf /var/lib/apt/lists/*

RUN apt-get update && apt-get install -y \
    cron \
    build-essential \
    libpng-dev \
    libjpeg62-turbo-dev \
    libfreetype6-dev \
    locales \
    libzip-dev \
    libmcrypt-dev \
    libonig-dev \
    zlib1g-dev \
    zip \
    jpegoptim optipng pngquant gifsicle \
    vim \
    unzip \
    git \
    graphviz \
    curl \
    supervisor


# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# install ext
RUN docker-php-ext-install mysqli opcache pdo pcntl

CMD ["php", "/var/www/html/api/mqtt/mqtt_startup_service.php"]

附近2.4 Dockerfile_swoole

# FROM phpswoole/swoole:4.5.9-php7.4
FROM php:7.1

ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime
WORKDIR /var/www/html

COPY ./app /var/www/html

# RUN sed -i "s@http://deb.debian.org@http://mirrors.aliyun.com@g" /etc/apt/sources.list
# RUN cat /etc/apt/sources.list
# RUN rm -Rf /var/lib/apt/lists/*

# RUN apt-get update && apt-get install -y \
#     cron \
#     build-essential \
#     libpng-dev \
#     libjpeg62-turbo-dev \
#     libfreetype6-dev \
#     locales \
#     libzip-dev \
#     libmcrypt-dev \
#     libonig-dev \
#     zlib1g-dev \
#     zip \
#     jpegoptim optipng pngquant gifsicle \
#     vim \
#     unzip \
#     git \
#     graphviz \
#     curl \
#     supervisor


# Clear cache
# RUN apt-get clean && rm -rf /var/lib/apt/lists/*

COPY ./swoole-src-2.0.6 /usr/src/php/ext/swoole
# install ext
RUN docker-php-ext-install mysqli opcache pdo pcntl swoole

CMD ["php", "/var/www/html/api/swoole/swoole_startup_udp_server.php"]

附件3:配置文件

附近3.1 my.cnf

# The MariaDB configuration file
#
# The MariaDB/MySQL tools read configuration files in the following order:
# 0. "/etc/mysql/my.cnf" symlinks to this file, reason why all the rest is read.
# 1. "/etc/mysql/mariadb.cnf" (this file) to set global defaults,
# 2. "/etc/mysql/conf.d/*.cnf" to set global options.
# 3. "/etc/mysql/mariadb.conf.d/*.cnf" to set MariaDB-only options.
# 4. "~/.my.cnf" to set user-specific options.
#
# If the same option is defined multiple times, the last one will apply.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# If you are new to MariaDB, check out https://mariadb.com/kb/en/basic-mariadb-articles/

#
# This group is read both by the client and the server
# use it for options that affect everything
#
[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[client-server]
# Port or socket location where to connect
# port = 3306
socket = /run/mysqld/mysqld.sock

# Import all .cnf files from configuration directory
[mariadbd]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

max_heap_table_size = 128M
tmp_table_size = 128M

max_allowed_packet=16M
max_connections=2048

thread_cache_size=256
sort_buffer_size=8M
bulk_insert_buffer_size = 16M

innodb_buffer_pool_size = 256M
innodb_log_buffer_size  = 8M


skip-host-cache
skip-name-resolve

!includedir /etc/mysql/mariadb.conf.d/
!includedir /etc/mysql/conf.d/

附近3.2 000-default.conf

<VirtualHost *:80>
	# The ServerName directive sets the request scheme, hostname and port that
	# the server uses to identify itself. This is used when creating
	# redirection URLs. In the context of virtual hosts, the ServerName
	# specifies what hostname must appear in the request's Host: header to
	# match this virtual host. For the default virtual host (this file) this
	# value is not decisive as it is used as a last resort host regardless.
	# However, you must set it for any further virtual host explicitly.
	#ServerName www.example.com

	ServerAdmin webmaster@localhost
	DocumentRoot /var/www/html
	
	<Directory "/var/www/html">
		AllowOverride None
		# Allow open access:
		Require all granted
	</Directory>

	# Further relax access to the default document root:
	<Directory "/var/www/html">
		Options Indexes FollowSymLinks

		AllowOverride None

		Require all granted
	</Directory>
	DirectoryIndex index.html login.html

	# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
	# error, crit, alert, emerg.
	# It is also possible to configure the loglevel for particular
	# modules, e.g.
	#LogLevel info ssl:warn

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

	# For most configuration files from conf-available/, which are
	# enabled or disabled at a global level, it is possible to
	# include a line for only one particular virtual host. For example the
	# following line enables the CGI configuration for this host only
	# after it has been globally disabled with "a2disconf".
	#Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

附近3.3 php.ini

389 memory_limit = 512M
568 error_log = /var/www/logs/php_errors.log
703 post_max_size = 32M
799 upload_max_filesize = 32M
877 date.timezone = Asia/Shanghai

附近3.4 swoole.ini

extension=swoole.so

附件4:完整版yml

version: "3.3"
services:        
######################################################北洋荣科dms模块
  dms_db:
    image: mariadb
    container_name: dms_db
    networks:
      - smartcard-net
    ports:
      - "3306:3306"
    volumes:
      - app-dmsdb-data:/var/lib/mysql
      - ./dms/my.cnf:/etc/mysql/my.cnf
      # - ./dms/initdb.d:/docker-entrypoint-initdb.d
    environment:
      MYSQL_ROOT_PASSWORD: "1q3e5t7u!"  
    restart: always 
################################################################################
  dms_lsb:
    container_name: dms_lsb
    image: nginx:latest
    ports: 
      - "5888:80"
    privileged: true
    volumes: 
     - ./dms/nginx_dms.conf:/etc/nginx/nginx.conf
    networks:
      - smartcard-net   
    links:     
     - dms_cluster1   
     - dms_cluster2
      
  dms_cluster1:
   image: dms_cluster1
   build:
      context: ./dms
      dockerfile: Dockerfile_http
   container_name: dms_cluster1
   networks:
      - smartcard-net
   environment:
     - ALLOW_OVERRIDE=true
   ports:
     - "5881:80"
   links:
     - dms_db
   volumes:
     - ./dms/000-default.conf:/etc/apache2/sites-enabled/000-default.conf
     - ./dms/php.ini:/usr/local/etc/php/php.ini
     - ./dms/swoole.ini:/etc/php.d/swoole.ini
     - ./dms/app:/var/www/html/
     - ./dms/logs/http1_logs:/var/www/logs/   
  dms_cluster2:
   image: dms_cluster2
   build:
      context: ./dms
      dockerfile: Dockerfile_http
   container_name: dms_cluster2
   networks:
      - smartcard-net
   environment:
     - ALLOW_OVERRIDE=true
   ports:
     - "5882:80"
   links:
     - dms_db    
   restart: always 
   volumes:
     - ./dms/000-default.conf:/etc/apache2/sites-enabled/000-default.conf
     - ./dms/php.ini:/usr/local/etc/php/php.ini
     - ./dms/swoole.ini:/etc/php.d/swoole.ini
     - ./dms/app:/var/www/html/
     - ./dms/logs/http2_logs:/var/www/logs/
################################################################################     
  dms_cron:
   image: dms_cron
   build:
      context: ./dms
      dockerfile: Dockerfile_cron
   container_name: dms_cron
   networks:
      - smartcard-net
   environment:
     - ALLOW_OVERRIDE=true
   links:
     - dms_db
   volumes:
     - ./dms/php.ini:/usr/local/etc/php/php.ini
     - ./dms/swoole.ini:/etc/php.d/swoole.ini
     - ./dms/app:/var/www/html/
     - ./dms/logs/cron_logs:/var/www/logs/
     
  dms_mqtt:
   image: dms_mqtt
   build:
      context: ./dms
      dockerfile: Dockerfile_mqtt
   container_name: dms_mqtt
   networks:
      - smartcard-net
   environment:
     - ALLOW_OVERRIDE=true
   links:
     - dms_db        
   restart: always 
   volumes:
     - ./dms/php.ini:/usr/local/etc/php/php.ini
     - ./dms/swoole.ini:/etc/php.d/swoole.ini
     - ./dms/app:/var/www/html/
     - ./dms/logs/mqtt_logs:/var/www/logs/
     
  dms_swoole:
   image: dms_swoole
   build:
      context: ./dms
      dockerfile: Dockerfile_swoole
   container_name: dms_swoole
   networks:
      - smartcard-net
   environment:
     - ALLOW_OVERRIDE=true
   ports:
     - 5988:5988/udp
   links:
     - dms_db           
   restart: always 
   volumes:
     - ./dms/php.ini:/usr/local/etc/php/php.ini
     - ./dms/swoole.ini:/etc/php.d/swoole.ini
     - ./dms/app:/var/www/html/
     - ./dms/logs/swoole_logs:/var/www/logs/
#####################################################################
volumes:
  app-dmsdb-data:
networks:
  smartcard-net:
    ipam:
      driver: default
      config:
        - subnet: 10.10.11.0/24
          gateway: 10.10.11.1

发表回复