學習打卡——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
部署成功