mysql
创建data目录
在usr/local/mysql/下创建data文件夹(任意位置都可以)
mkdir /usr/local/mysql/data
下载镜像
选择自己想要的镜像版本
docker pull mysql:5.7
run
docker run -d -p 3306:3306 --name mysql --net mynet -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=密码 mysql:5.7
- -d:后台运行
- -p:3306:3306 :将容器3306映射到服务器的3306
- –name:容器名
- -v:将服务器的data目录挂在到容器的mysql目录
- -e:设置密码
- –net自己设置的docker网络,没有设置就不写,默认就好
nginx
下载最新的ngixn镜像
docker pull nginx
创建ssl
因为要做https,所以需要ssl文件
在/usr/local/nginx/下创建ssl文件夹(任意位置都可以)
mkdir /usr/local/nginx/ssl
将证书nginx下的文件上传到这个文件夹
run
docker run -d -p 80:80 -p 443:443 --name nginx_ssl_halo --net mynet -v /usr/local/nginx/ssl:/etc/nginx/ssl -v /usr/local/nginx/conf_halo/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/nginx/conf_halo/log:/var/log/nginx nginx
容器的nginx配置文件放在/etc/ngixn/下,挂载自己的配置文件就好。在吧ssl目录挂载在容器里,在配置文件配置ssl路径就好。
nginx.conf
server {
listen 80;
#填写绑定证书的域名
server_name www.xx.com xx.com;
#把http的域名请求转成https
return 301 https://www.xx.com$request_uri;
}
server {
client_max_body_size 1024m;
#SSL 访问端口号为 443
listen 443 ssl;
#填写绑定证书的域名
server_name www.xx.com;
#证书文件名称
ssl_certificate ssl/1_www.xx.com_bundle.crt;
#私钥文件名称
ssl_certificate_key ssl/2_www.xx.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
#把https://xx.com转为https://www.xx.com
if ($host != 'www.xx.com') {
rewrite ^/(.*)$ https://www.xx.com/$1 permanent;
}
location / {
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8090/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}