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