学习打卡——docker部署
1. 部署mysql
拉取对应版本的mysql,不加版本号默认当前最新版
docker pull mysql:8.0.26
创建目录,可以换成你自己想把它存放的目录,后续同理
mkdir ~/mysql cd ~/mysql
启动
docker run -id \ -p 3306:3306 \ --name=c_mysql \ -v $PWD/conf:/etc/mysql/conf.d \ -v $PWD/logs:/logs \ -v $PWD/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ mysql:8.0.26
前一个3306是你需要映射的端口号,即外界可以使用该端口号访问内部的3306端口
docker exec -it c_mysql /bin/bash
注:如果部署的mysql版本是8版本的话,使用第三方可视化软件连接数据库的时候需要先在linux中把防火墙关闭并重启,开放mysql配置的对应端口,其次输出
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'xxx'
xxx替换成自己的密码,root也替换成自己的用户名,这样外界才可以连接上数据库。
sql主机地址可以在终端中输入
ifconfig -a
查看
方框内的ip地址复制即可
2. tomcat部署
首先拉取tomcat,我这里因为windows下安装的就是这个版本,所以习惯在linux下也安装相同版本,可以更换成自己喜欢的版本
docker pull tomcat:8.5.71
创建目录
mkdir ~/tomcat cd ~/tomcat
运行
docker run -id \ --name=c_tomcat \ -p 8080:8080 \ -v $PWD:/usr/local/tomcat/webapps \ tomcat:8.5.71
打开浏览器输入部署mysql时的ip地址加8080端口号,这时候浏览器会显示404页面,说明部署成功。当然你也可以在终端创建一个html文件,在浏览器访问这个html文件。
3. Nginx部署
nginx配置文件
user nginx; worker_processes 1; error_log /var/log/nginx/error.log.warn; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; 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/niginx/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }
还是先拉取文件再创建目录,这里就不赘述了,上面这个配置文件挂载在/nginx/conf/下
不同版本nginx可能会出现如下错误
docker: Error response from daemon: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: rootfs_linux.go:75: mounting "/conf/nginx.conf" to rootfs at "/etc/nginx/nginx.conf" caused: mount through procfd: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.
是nginx不支持挂载文件,或者挂载的文件要在宿主机上有同步文件
所以可以复制一份
docker run --name test -d nginx docker cp test:/etc/nginx/nginx.conf ~/nginx/conf #这里替换成自己的文件夹
docker run -id \ --name=c_nginx \ -p 80:80 \ -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:ro \-v $PWD/html:/usr/share/nginx/html:rw \ -v $PWD/logs:/var/log/nginx \
nginx:1.21.6
部署成功,我是修改了html文件夹下的index.html页面的,所以显示的页面是这个
4. Redis部署
直接拉取所需版本
docker pull redis:6.2.6
运行
docker run -id --name=c_redis -p 6369:6379 redis:6.2.6
因为我本机已经安装了Redis,会占用6379端口,所以我把外界映射改成了6369