Docker02-应用部署

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
posted @ 2022-06-29 12:10  行稳致远方  阅读(94)  评论(0)    收藏  举报