docker部署redis,mongodb,mysql、nginx常用环境
docker 安装mysql
# docker pull mysql:5.7 # docker run --name mysql5.7 -p 3306:3306 -v /data/mysql/data:/var/lib/mysql -v /data/mysql/conf:/etc/mysql/conf.d -v /data/mysql/logs:/var/log/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
MySQL(5.7.19)的默认配置文件是 /etc/mysql/my.cnf 文件。
如果想要自定义配置,建议向 /etc/mysql/conf.d 目录中创建 .cnf 文件。
新建的文件可以任意起名,只要保证后缀名是 cnf 即可。
新建的文件中的配置项可以覆盖 /etc/mysql/my.cnf 中的配置项
进入mysql
# docker exec -it d29dd3b86303 /bin/bash root@96a49c6e7235:/# mysql -u root -p
查看配置文件
root@96a49c6e7235:/# /etc/mysql/mysql.conf.d/mysqld.cnf
复制配置文件
# docker cp 容器id:/etc/mysql/mysql.conf.d/mysqld.cnf /data/mysql/conf/
mysql:8.0
docker run --name mysql8.0 --restart always \ -p 3306:3306 --privileged=true \ -v /data/mysql/data:/var/lib/mysql \ -v /data/mysql/conf:/etc/mysql/conf.d \ -v /data/mysql/logs:/var/log/mysql \ -v /data/mysql/mysql-files:/var/lib/mysql-files \ -e MYSQL_ROOT_PASSWORD=123456 \ -d mysql:8.0
docker安装MongoDB
docker pull mongo docker run --name my_mgdb -p 10311:27017 -v /data/mongodb/my_mgdb/data:/data/db -v /data/mongodb/my_ngdb/backup:/data/backup -v /data/mongodb/mh_mgdb/logs:/var/log/mongodb -d mongo:latest
进入MongoDB
# docker exec -it cbf07fc08d7f /bin/bash # root@cbf07fc08d7f:/# mongo
在mongo的shell里添加用户名密码等
# use admin # db.createUser( { user: "myadmin", pwd: "123456", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } ) # db.auth("myadmin","123456"); # use my_mgdb # db.createUser( { user: "myadmin", pwd: "123456", roles: [ { role: "userAdmin", db: "my_mgdb" }, { role: "readWrite", db: "my_mgdb" },{ role: "dbOwner", db: "my_mgdb" }] } ) # db.auth("myadmin","123456");
docker安装redis
docker pull redis:4.0 docker run -d --privileged=true -p 6379:6379 -v /data/redis/:/etc/redis/ -v /data/redis:/data --name myredis redis:4.0 redis-server /etc/redis/redis.conf --appendonly yes
docker 最新是5.0
先去下载一个 包下来得到配置文件(http://download.redis.io/releases/redis-4.0.3.tar.gz)放到 /data/redis/
--privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
-v /data/redis/:/etc/redis/ 映射配置文件目录
-v /data/redis:/data:映射数据目录
redis-server /etc/redis/redis.conf 指定配置文件启动redis-server进程
--appendonly yes:开启数据持久化
进入redis指令
docker exec -it container-id redis-cli 或者 docker exec -it container-id /
redis-cli
auth myRedis #验证密码
docker 安装nginx
docker pull nginx
创建挂载目录
mkdir -p /data/nginx/{conf,conf.d,html,logs}
编写nginx.conf配置文件,并放在文件夹中
# For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { 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/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; # 文件目录 server { listen 80; listen 443 ssl; server_name xxxx.com; #ssl on; ssl_certificate C:/nginx-1.14.0/cert/1_xxxx.com_bundle.crt; ssl_certificate_key C:/nginx-1.14.0/cert/2_xxxx.com.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; root C:/jifan/file_web; location / { index index.html index.php; } access_log logs/xxxx.com.log; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
启动容器
docker run --name mynginx -d -p 80:80 \ -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ --privileged=true \ -v /data/nginx/logs:/var/log/nginx \ docker.io/nginx
如果非转发,请求文件,目录需要单独挂载