准备环境
java8
docker pull mykro/java8-jre
mysql
docker run -d --name mysql5.7 -p 33306:3306 -v /docker/mysql/data:/var/lib/mysql -v /docker/mysql/conf:/etc/mysql/conf.d -v /docker/mysql/logs:/var/log/mysql -e MYSQL_ROOT_PASSWORD=123456 --restart=always mysql:5.7
本地没有此镜像,docker可以自动网上拉取。设置MySQL字符格式,和不区分大小写可以参考这篇博客。
https://blog.youkuaiyun.com/Cky079/article/details/88535536?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-8&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-8
nginx
mkdir -p /docker/nginx/conf
mkdir -p /docker/nginx/conf.d
mkdir -p /docker/nginx/html
mkdir -p /docker/nginx/logs
mkdir -p /docker/nginx/ssl #你的https 密钥放在这里
创建宿主机目录,挂载到ngin容器中
cd /docker/nginx/conf.d
vim nginx.conf
切换到配置目录创建nginx.conf配置文件。
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
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/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
#include /etc/nginx/conf.d/*.conf;
server {
listen 443 ssl;
server_name wwww.xxx.cn;#你的域名
ssl_certificate /ssl/xxxx.pem; #配置https 密钥的位置
ssl_certificate_key /ssl/xxxxx.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;
location / {
proxy_pass http://101.132.161.32:9091/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
server_name xxx.cn;#你的域名
rewrite ^(.*)$ https://$host$1 permanent; # 80端口转https
}
}
docker run --name mynginx -d -p 80:80 -p 443:443 -v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /docker/nginx/conf.d:/etc/nginx/conf.d -v /docker/nginx/logs:/var/log/nginx -v /docker/nginx/ssl:/ssl nginx
redis
mkdir -p /docker/redis #存放redis.conf 配置文件
mkdir -p /docker/redis/data #存放缓存数据
http://download.redis.io/redis-stable/redis.conf # redis.conf 官方配置文件。全文复制保存为redis.conf
放到 /docker/redis 目录下。
修改启动默认配置(从上至下依次):
bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问 添加 bind 0.0.0.0
protected-mode no #默认yes,开启保护模式,限制为本地访问
daemonize no#默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败
databases 16 #数据库个数(可选),我修改了这个只是查看是否生效。。
dir ./ #输入本地redis数据库存放文件夹(可选)
appendonly yes #redis持久化(可选)
docker run -p 63799:6379 --name myredis -v /docker/redis/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass “你的redis密码”
全部配置好,重启所有容器,刷新配置
docker restart $(docker ps -a )
附上成功图
以上是spring boot 环境,接下来启动spring boot
vim Dockerfile
FROM mykro/java8-jre:latest
VOLUME /tmp
ADD *.jar app.jar
ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar" ]
运行 Dockerfile
docker build -f /docker/springboot/Dockerfile\ -t qa:0.1 .
-f Dockerfile 目录
-t 打包镜像名称:版本
我的启动进行 命令 参考
docker run -d -v /docker/springboot/data/upload:/upload -v /docker/springboot/data/upload/avatar:/upload/avatar -v /docker/springboot/data/logs:/upload/logs -p 9091:9090 qa:0.1