本文主要是介绍docker compose部署mall,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
安装环境软件
1.拉取镜像
docker pull mysql:5.7
docker pull redis:7
docker pull nginx:1.22
docker pull rabbitmq:3.9-management
docker pull elasticsearch:7.17.3
docker pull kibana:7.17.3
docker pull logstash:7.17.3
docker pull mongo:4
docker pull minio/minio
2.创建目录
mkdir -p /opt/mall/minio/data
mkdir -p /opt/mall/redis/data
mkdir -p /opt/mall/mysql/{data,conf,log}
mkdir -p /opt/mall/nginx/{conf,html,logs}
mkdir -p /opt/mall/rabbitmq/data
mkdir -p /opt/mall/elasticsearch/{plugins,data}
mkdir -p /opt/mall/logstash
mkdir -p /opt/mall/mongo/db
mkdir -p /opt/mall/minio/data
3.修改目录权限
chmod 777 /opt/mall/elasticsearch/data
4.配置nginx
4.1nginx.conf
cd /opt/mall/nginx/conf
vim nginx.conf
内容如下
user nginx;
worker_processes 1;error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;events {worker_connections 1024;
}http {include /etc/nginx/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 /var/log/nginx/access.log main;sendfile on;#tcp_nopush on;keepalive_timeout 65;#gzip on;server {listen 80;server_name localhost;location / {root /usr/share/nginx/html;index index.html index.htm;}error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}}
}
4.2mime.types
vim mime.types
内容如下
types {text/html html htm shtml;text/css css;text/xml xml;image/gif gif;image/jpeg jpeg jpg;application/javascript js;application/atom+xml atom;application/rss+xml rss;text/mathml mml;text/plain txt;text/vnd.sun.j2me.app-descriptor jad;text/vnd.wap.wml wml;text/x-component htc;image/avif avif;image/png png;image/svg+xml svg svgz;image/tiff tif tiff;image/vnd.wap.wbmp wbmp;image/webp webp;image/x-icon ico;image/x-jng jng;image/x-ms-bmp bmp;font/woff woff;font/woff2 woff2;application/java-archive jar war ear;application/json json;application/mac-binhex40 hqx;application/msword doc;application/pdf pdf;application/postscript ps eps ai;application/rtf rtf;application/vnd.apple.mpegurl m3u8;application/vnd.google-earth.kml+xml kml;application/vnd.google-earth.kmz kmz;application/vnd.ms-excel xls;application/vnd.ms-fontobject eot;application/vnd.ms-powerpoint ppt;application/vnd.oasis.opendocument.graphics odg;application/vnd.oasis.opendocument.presentation odp;application/vnd.oasis.opendocument.spreadsheet ods;application/vnd.oasis.opendocument.text odt;application/vnd.openxmlformats-officedocument.presentationml.presentationpptx;application/vnd.openxmlformats-officedocument.spreadsheetml.sheetxlsx;application/vnd.openxmlformats-officedocument.wordprocessingml.documentdocx;application/vnd.wap.wmlc wmlc;application/wasm wasm;application/x-7z-compressed 7z;application/x-cocoa cco;application/x-java-archive-diff jardiff;application/x-java-jnlp-file jnlp;application/x-makeself run;application/x-perl pl pm;application/x-pilot prc pdb;application/x-rar-compressed rar;application/x-redhat-package-manager rpm;application/x-sea sea;application/x-shockwave-flash swf;application/x-stuffit sit;application/x-tcl tcl tk;application/x-x509-ca-cert der pem crt;application/x-xpinstall xpi;application/xhtml+xml xhtml;application/xspf+xml xspf;application/zip zip;application/octet-stream bin exe dll;application/octet-stream deb;application/octet-stream dmg;application/octet-stream iso img;application/octet-stream msi msp msm;audio/midi mid midi kar;audio/mpeg mp3;audio/ogg ogg;audio/x-m4a m4a;audio/x-realaudio ra;video/3gpp 3gpp 3gp;video/mp2t ts;video/mp4 mp4;video/mpeg mpeg mpg;video/quicktime mov;video/webm webm;video/x-flv flv;video/x-m4v m4v;video/x-mng mng;video/x-ms-asf asx asf;video/x-ms-wmv wmv;video/x-msvideo avi;
}
5.配置logstash
cd /opt/mall/logstash/vim logstash.conf
内容如下
input {tcp {mode => "server"host => "0.0.0.0"port => 4560codec => json_linestype => "debug"}tcp {mode => "server"host => "0.0.0.0"port => 4561codec => json_linestype => "error"}tcp {mode => "server"host => "0.0.0.0"port => 4562codec => json_linestype => "business"}tcp {mode => "server"host => "0.0.0.0"port => 4563codec => json_linestype => "record"}
}
filter{if [type] == "record" {mutate {remove_field => "port"remove_field => "host"remove_field => "@version"}json {source => "message"remove_field => ["message"]}}
}
output {elasticsearch {hosts => "192.168.168.110:9200"index => "mall-%{type}-%{+YYYY.MM.dd}"}
}
6.编写环境软件脚本
cd /opt/mall
vim docker-compose-env.yml
内容如下
version: '3'
services:mysql:image: mysql:5.7container_name: mysqlcommand: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_cirestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: 123456 #设置root帐号密码ports:- 3306:3306volumes:- /opt/mall/mysql/data:/var/lib/mysql #数据文件挂载- /opt/mall/mysql/conf:/etc/mysql #配置文件挂载- /opt/mall/mysql/log:/var/log/mysql #日志文件挂载redis:image: redis:7container_name: rediscommand: redis-server --appendonly yesvolumes:- /opt/mall/redis/data:/data #数据文件挂载ports:- 6379:6379nginx:image: nginx:1.22container_name: nginxvolumes:- /opt/mall/nginx/conf:/etc/nginx #配置文件目录挂载- /opt/mall/nginx/html:/usr/share/nginx/html #静态资源根目录挂载- /opt/mall/nginx/logs:/var/log/nginx #日志文件挂载ports:- 80:80rabbitmq:image: rabbitmq:3.9-managementcontainer_name: rabbitmqvolumes:- /opt/mall/rabbitmq/data:/var/lib/rabbitmq #数据文件挂载ports:- 5672:5672- 15672:15672elasticsearch:image: elasticsearch:7.17.3container_name: elasticsearchenvironment:- "cluster.name=elasticsearch" #设置集群名称为elasticsearch- "discovery.type=single-node" #以单一节点模式启动- "ES_JAVA_OPTS=-Xms512m -Xmx1024m" #设置使用jvm内存大小volumes:- /opt/mall/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件文件挂载- /opt/mall/elasticsearch/data:/usr/share/elasticsearch/data #数据文件挂载ports:- 9200:9200- 9300:9300logstash:image: logstash:7.17.3container_name: logstashenvironment:- TZ=Asia/Shanghaivolumes:- /opt/mall/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf #挂载logstash的配置文件depends_on:- elasticsearch #kibana在elasticsearch启动之后再启动links:- elasticsearch:es #可以用es这个域名访问elasticsearch服务ports:- 4560:4560- 4561:4561- 4562:4562- 4563:4563kibana:image: kibana:7.17.3container_name: kibanalinks:- elasticsearch:es #可以用es这个域名访问elasticsearch服务depends_on:- elasticsearch #kibana在elasticsearch启动之后再启动environment:- "elasticsearch.hosts=http://es:9200" #设置访问elasticsearch的地址ports:- 5601:5601mongo:image: mongo:4container_name: mongovolumes:- /opt/mall/mongo/db:/data/db #数据文件挂载ports:- 27017:27017minio:image: minio/miniocontainer_name: miniocommand: server /data --console-address ":9001" #指定数据目录及console运行端口启动volumes:- /opt/mall/minio/data:/data #数据目录挂载environment:- "MINIO_ROOT_USER=minioadmin"- "MINIO_ROOT_PASSWORD=minioadmin"ports:- 9090:9000- 9001:9001
7.启动所有环境软件
docker-compose -f docker-compose-env.yml up -d
8.配置mysql
mkdir -p /opt/mall/mysql/backup
拷贝官方的数据库脚本
脚本名称:mall.sql
脚本内容
导入数据库脚本
#进入mysql容器
docker exec -it mysql /bin/bash
#连接到mysql服务
mysql -uroot -p123456 --default-character-set=utf8
#创建远程访问用户
grant all privileges on *.* to 'reader' @'%' identified by '123456';
#创建mall数据库
create database mall character set utf8;
#使用mall数据库
use mall;
#导入mall.sql脚本
source /mall.sql;
9.配置rabbitmq
rabbitmq
创建mall用户,账户/密码:mall/mall
创建一个新的虚拟host为:/mall
将新的虚拟host授予mall用户
安装应用
1.创建目录
mkdir -p /opt/mall/app/mall-admin/logs
mkdir -p /opt/mall/app/mall-search/logs
mkdir -p /opt/mall/app/mall-portal/logs
2.创建配置文件
/opt/mall/app
vim docker-compose-app.yml
内容如下
version: '3'
services:mall-admin:image: mall/mall-admin:1.0-SNAPSHOTcontainer_name: mall-adminports:- 10061:8080volumes:- /opt/mall/app/mall-admin/logs:/var/logs- /etc/localtime:/etc/localtimeenvironment:- 'TZ="Asia/Shanghai"'external_links:- mysql:db #可以用db这个域名访问mysql服务mall-search:image: mall/mall-search:1.0-SNAPSHOTcontainer_name: mall-searchports:- 10062:8081volumes:- /opt/mall/app/mall-search/logs:/var/logs- /etc/localtime:/etc/localtimeenvironment:- 'TZ="Asia/Shanghai"'external_links:- elasticsearch:es #可以用es这个域名访问elasticsearch服务- mysql:db #可以用db这个域名访问mysql服务mall-portal:image: mall/mall-portal:1.0-SNAPSHOTcontainer_name: mall-portalports:- 10063:8085volumes:- /opt/mall/app/mall-portal/logs:/var/logs- /etc/localtime:/etc/localtimeenvironment:- 'TZ="Asia/Shanghai"'external_links:- redis:redis #可以用redis这个域名访问redis服务- mongo:mongo #可以用mongo这个域名访问mongo服务- mysql:db #可以用db这个域名访问mysql服务- rabbitmq:rabbit #可以用rabbit这个域名访问rabbitmq服务
3.启动
docker compose -f docker-compose-app.yml up -d
这篇关于docker compose部署mall的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!