Docker02-应用部署
1.Nginx
# /home/data/nginx/conf/nginx.conf下需要有nginx.conf文件。
# /home/data/nginx/html挂载后为空。
docker run -d --name nginx8088 -p 8080:80 \
-v /home/data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/data/nginx/html:/usr/share/nginx/html \
-v /home/data/nginx/logs:/var/log/nginx --net fastdfs nginx
# nginx.conf文件
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
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;
include /etc/nginx/conf.d/*.conf;
}
2.Tomcat
docker run -d --name mytomcat01 -p 8081:8080 \
-v /home/data/tomcat/webapps:/usr/local/tomcat/webapps tomcat
# 启动完成后/home/data/tomcat/webapps是一个空的目录,浏览器无法正常访问Tomcat。
# Tomcat镜像将原有的自带的前端页面放在了/usr/local/tomcat/webapps.dist下,需要将其拷贝出来。
# /usr/local/tomcat/webapps目录已经挂载处理,可以直接进入容器拷贝。
docker cp 54894797b015:/usr/local/tomcat/webapps.dist/ /home/data/tomcat/webapps
cp -r /home/data/tomcat/webapps/webapps.dist/* /home/data/tomcat/webapps/
rm -rf /home/data/tomcat/webapps/webapps.dist
3.ElasticSearch
# 创建ElasticSearch需要挂载的目录
mkdir -p /home/data/elasticsearch/{config,data,plugins,logs}
# 添加ElasticSearch配置文件
echo -e "cluster.name: "docker-cluster"\nnetwork.host: 0.0.0.0" >> /home/data/elasticsearch/config/elasticsearch.yml
chmod -R 777 /home/data/elasticsearch
# 单机启动并设置JVM参数。
docker run -d --name elasticsearch \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /home/data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /home/data/elasticsearch/data:/usr/share/elasticsearch/data \
-v /home/data/elasticsearch/logs:/usr/share/elasticsearch/logs \
-v /home/data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
elasticsearch:7.6.2
# 部署kibana。
docker run -d --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.175.128:9200 -p 5601:5601 kibana:7.6.2
# 进入容器修改配置文件
docker exec -it kibana /bin/bash
cd config/
vi kibana.yml
# 配置文件修改
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: [ "http://192.168.175.128:9200" ]
i18n.locale: "Zh-CN"
docker restart 07cb193c4b54
# 访问页面
http://192.168.175.128:5601/app/kibana
4. MySQL
docker run -d --name mysql -p 3306:3306 \
-v /home/data/mysql/conf:/etc/mysql/conf.d \
-v /home/data/mysql/logs:/logs \
-v /home/data/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 mysql
docker exec -it 4c6cb467295f /bin/bash
# 登录MySQL
mysql -uroot -p123456
5.Redis
# 需要先在/home/data/redis/目录创建Redis配置文件redis.conf。
mkdir -p /home/data/redis/
echo -e "bing 0.0.0.0\nport 6379" >> redis.conf
docker run -d -p 6379:6379 --name redis \
-v /home/data/redis/redis.conf:/etc/redis/redis.conf \
-v /home/data/redis/data:/data \
redis redis-server /etc/redis/redis.conf
6.Zookeeper+Kafka
docker pull zookeeper:3.8
# Zookeeper和Kafka连接,官方对推荐将其放在一个网络中。
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 kafka-net
docker run -d -p 2181:2181 --name zookeeper --net kafka-net zookeeper:3.8
docker pull bitnami/kafka:3.2
docker run -d --name kafka \
-p 9092:9092 \
--network kafka-net \
-e ALLOW_PLAINTEXT_LISTENER=yes \
-e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 \
bitnami/kafka:3.2
7.RabbitMQ
docker pull rabbitmq:management
docker run -d --name rabbit \
-p 5672:5672 -p 15672:15672 \
-e RABBITMQ_DEFAULT_USER=root \
-e RABBITMQ_DEFAULT_PASS=123456 \
rabbitmq:management
8.Fastdfs
docker pull season/fastdfs:1.2
docker run -d --name tracker -p 22122:22122 \
-v /home/data/fastdfs/tracker/data:/fastdfs/tracker/data \
--net host season/fastdfs:1.2 tracker
# 部署存储服务
# 创建配置文件storage.conf。
# storage.conf配置文件在tracker容器中的/fdfs_conf/storage.conf
mkdir -p /home/data/fastdfs/storage/conf
touch /home/data/fastdfs/storage/conf/storage.conf
# 直接从tracker中复制配置文件
docker cp tracker:/fdfs_conf/storage.conf /home/data/fastdfs/storage/conf
# fastdfs的storage的网络选择--net host,和宿主机共享网络。
# 1 如果是--net fastdfs(自定义网络),产生的问题就是只能在服务器内部访问,想要服务器外部访问,需要做转发。
# 2. 如果不使用--net host,storeage会给tracker返回自己的网络为172.17.0.1:23000,客户端就会产生如下错误。
# 无法获取服务端连接资源:can't create connection to/172.17.0.1:23000
docker run -d --name storage -p 23000:23000 \
-e TRACKER_SERVER="192.168.175.128:22122" \
-v /home/data/fastdfs/storage/conf/storage.conf:/fdfs_conf/storage.conf \
-v /home/data/fastdfs/storage/data:/fastdfs/storage/data \
-v /home/data/fastdfs/storage/store_path:/fastdfs/store_path \
--net host season/fastdfs:1.2 storage
# nginx前端访问图片
# 添加nginx配置文件
mkdir -p /home/data/fastdfs/nginx/conf
touch /home/data/fastdfs/nginx/conf/nginx.conf
# 可以从tracker中复制nginx的配置文件,但是还需要对nginx的文件进行修改。
# nginx启动成功后图片的访问地址为 http://192.168.175.128:8088/group1/M00/00/00/wKivgGK7u4mATUc3AAB4yBJroAs045.jpg
docker cp tracker:/etc/nginx/conf/nginx.conf /home/data/fastdfs/nginx/conf/nginx.conf
docker run -d --name nginx -p 8088:8088 \
-e TRACKER_SERVER="192.168.175.128:22122" \
-v /home/data/fastdfs/nginx/html:/usr/share/nginx/html \
-v /home/data/fastdfs/storage/store_path:/fastdfs/store_path \
-v /home/data/fastdfs/nginx/logs:/var/log/nginx \
-v /home/data/fastdfs/nginx/conf/nginx.conf:/etc/nginx/conf/nginx.conf \
--net host season/fastdfs:1.2 nginx
# nginx.con文件
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#gzip on;
server {
listen 8088;
server_name localhost;
location /group1/M00 {
root /fastdfs/store_path;
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
9.jar
FROM openjdk:11-jre
ARG ACTIVE_PROFILE
ENV spring.profiles.active=$ACTIVE_PROFILE
RUN mkdir -p /opt/app
WORKDIR /opt/app
COPY . /opt/app
COPY Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
ENTRYPOINT ["java", "-jar", "xxx-0.0.1-SNAPSHOT.jar"]
docker build -t myjar:1.0 .
docker run --name myjar -d \
-v /home/data/jar/logs:/opt/app/logs \
-p 8080:8080 myjar:1.0