https://docs.docker.com/engine/install/ubuntu/
安装 Docker 引擎
编辑配置文件
/mysql/conf/my.cnf
[mysql]
#设置mysql客户端默认字符集
default-character-set=UTF8MB4
[mysqld]
#设置3306端口
port=3306
#允许最大连接数
max_connections=200
#允许连接失败的次数
max_connect_errors=10
#默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
#服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=UTF8MB4
#开启查询缓存
explicit_defaults_for_timestamp=true
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#等待超时时间秒
wait_timeout=60
#交互式连接超时时间秒
interactive-timeout=600
出错处理
systemctl restart docker
sudo lsof -i :3306
flush privileges;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'master$1234';
flush privileges;
docker run -d -p 3306:3306 \
--net bind --ip 172.19.0.103 \
--name mysql \
--restart=always \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=master$1234 \
-v /mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf \
-v /mysql/logs:/logs \
-v /mysql/data:/var/lib/mysql \
--privileged=true \
mysql
docker cp mysql:/etc/mysql/my.cnf /mysql/conf
docker exec mysql cat /etc/mysql/my.cnf
use mysql
update user set Host='%' where User='root';
//********************redis*******************
firewall-cmd --zone=public --add-port=6379/tcp --permanent
systemctl restart firewalld.service
firewall-cmd --list-ports
docker run --name redis -p 6379:6379 \
--net bind --ip 172.19.0.104 \
--restart=always \
-v /redis/conf/redis.conf:/etc/redis/redis.conf \
-v /redis/data:/data -d redis
//********************nginx**********************
1.创建挂载目录
mkdir -p /home/nginx/conf \
mkdir -p /home/nginx/log \
mkdir -p /home/nginx/html \
mkdir /home/pre_server -p \
1、拉取镜像
docker pull nginx
2、启动nginx容器
docker run --restart=always --name=nginx -p 80:80 -d nginx
3、访问测试
访问地址:http://ip+port
5、复制配置文件到宿主机器
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/nginx/
6、创建前端工程挂载目录
该目录的好处在于,上传新的前端项目后,不用重新启动nginx,只需要修改nginx.conf配置
mkdir /home/pre_server -p
7、删除之前建立的nginx
docker stop nginx
docker rm nginx
8、挂载启动nginx容器
docker run --restart=always \
-p 80:80 \
--name nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
--privileged=true -d nginx:latest
9、测试访问
为了更好的验证,容器是已挂载的方式进行启动,我们修改html 下的代码
cd /nginx/html
# 编辑index.html
vim index.html
10、验证pre_home目录
我们将html下的index.html拷贝到/nginx/pre_server下,并且配置nginx.conf文件,再重启nginx,
也可以自己上传,自定义的前端工程到/nginx/pre_server下
11、修改nginx.conf:
vim /nginx/conf/nginx/conf.d/default.conf
添加配置:
location /crb {
alias /nginx/pre_server;
index index.html;
}
# 12、修改配置nginx配置文件后加载
docker exec 容器id nginx -t
docker exec 容器id nginx -s reload
13、测试访问:
访问地址:ip+port/crb
14、总结
通过docker搭建nginx;
实现自定义目录挂载,方便配置文件的修改;
通过pre_home目录管理前端工程,使多个项目时,不用新建nginx容器挂载新的工程目录;