docker安装mysql、elasticsearch、redis

docker安装mysql、elasticsearch、redis

mysql

1、创建mysql要挂载的数据卷,docker的卷一般在/var/lib/docker/volumes目录下

docker volume create mysql-data

2、拉取mysql镜像

docker pull mysql

3、运行容器,并将创建的卷挂载到mysql容器,端口映射,密码不要太复杂

docker run -d \
	--name=mysql \
	-p 3306:3306 \
	-v mysql-data:/var/lib/mysql \
	-e MYSQL_ROOT_PASSWORD=1234 mysql

# -d 后台运行
# -p 宿主机端口:容器内部服务端口		 端口映射
# -v 宿主机数据目录:容器内部数据目录	数据卷挂载

docker run -d --name=mysql -p 3306:3306 -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1234 mysql

es

1、拉取es镜像,这里选择一个比较稳定的版本 elasticsearch:7.12.1

2、运行容器,挂载数据卷,端口映射

docker run -d \
  --name es \
    -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
    -e "discovery.type=single-node" \
    -v es-data:/usr/local/elasticsearch7.12.1/data \
    -v es-plugins:/usr/local/elasticsearch7.12.1/plugins \
    -v es-logs:/usr/local/elasticsearch7.12.1/logs \
    -p 9200:9200 \
    -p 9300:9300 \
elasticsearch:7.12.1

redis

1、创建redis要挂载的数据卷

mkdir /home/redis
touch /home/redis/redis.conf
docker volume create redis-data

2、修改redis.conf文件,设置密码

requirepass: 1234

3、运行容器

docker run \
	--name redis \
	-p 6379:6379 \
	-v redis-data:/data \
	-v /home/redis/redis.conf:/etc/redis/redis.conf \
	-e REDIS_PASSWORD=1234 \
	-d redis redis-server /etc/redis/redis.conf
	
docker run --name redis -p 6379:6379 -v redis-data:/data -v /home/redis/redis.conf:/etc/redis/redis.conf -e REDIS_PASSWORD=1234 -d redis redis-server /etc/redis/redis.conf

nginx

1、创建挂载数据卷

# 存放conf.d/* nginx.conf等配置文件
mkdir -p /home/nginx
# 存放dist
mkdir -p /home/xrc/nginx
# 存放后端uploads文件

2、先将一个nginx容器的配置文件复制到宿主机数据卷

docker run --name nginx -p 9001:80 -d nginx

docker cp nginx:/etc/nginx /home/nginx

在 /home/nginx/conf.d/default.conf 文件中修改你的配置

以下是我的配置修改

server {
    listen       80;  
    listen  [::]:80;  
    server_name  localhost;  
  
    #access_log  /var/log/nginx/host.access.log  main;  
  
    location / {  
	try_files $uri $uri/ /index.html;
        root   /usr/share/nginx/html;  
        index  index.html index.htm;  
    }  
  
    # 将/api下的请求转发到后端  
    location /api/ {  
        proxy_pass http://127.0.0.1:8080/api/;
        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_set_header X-Forwarded-Proto $scheme;  
  
        # rewrite ^/api/(.*)$ /$1 break;  
    }  
  
    location /uploads/ {
	alias /opt/gvb/server/uploads/;
    }

    error_page   500 502 503 504  /50x.html;  
    location = /50x.html {  
        root   /usr/share/nginx/html;  
    }  
}

3、删除原来的容器,并运行一个新的nginx容器

如果你nginx配置转发后端的api服务的ip地址写的是127.0.0.1,那么就最好指定网络模式--netword host,否则容器默认使用bridge模式,这样会导致转发指定的127不会是宿主机,而是本nginx容器,但是后端服务又不在nginx容器里面,而是在宿主机中,所以我这里指定了host网络模式,通常是不需要指定-p端口映射的,而是直接与宿主机关联

docker rm nginx

docker run -d \
	--name nginx \
	-v /home/nginx/conf.d:/etc/nginx/conf.d \
	-v /home/nginx/nginx.conf:/home/nginx/nginx.conf \
	-v /home/xrc/nginx/dist:/usr/share/nginx/html \
	-v /www/server/go_project/gvb_ser/uploads:/opt/gvb/server/uploads \
	--network host \
	--restart=always \
	nginx
posted @ 2025-04-01 15:25  小依昂阳  阅读(22)  评论(0)    收藏  举报