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/

  

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 

  

如果非转发,请求文件,目录需要单独挂载