站长使用docker命令时已不需要加sudo,具体请查看docker基础用法

安装MySQL docker镜像

  1. 访问MySQL镜像库地址
  2. 在宿主服务器输入docker pull mysql:latest 或者 docker pull mysql:8.0.28

  3. 使用docker images查看是否安装成功
  4. 运行容器
    1
    2
    # mysql为自定义容器名字
    docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=12345678 -itd mysql:8.0.28
  5. 通过 docker ps 命令查看是否安装成功
  6. docker exec -it mysql bash进入mysql容器
  7. 登录mysqlmysql -u root -p
  8. 创建远程访问用户
    1
    2
    3
    4
    5
    6
    -- 创建用户
    CREATE USER 'jezer'@'%' IDENTIFIED WITH mysql_native_password BY '12345678';
    -- 赋予所有权限
    GRANT ALL PRIVILEGES ON *.* TO 'jezer'@'%';
    -- 刷新权限
    FLUSH PRIVILEGES
  9. 先按Ctrl+p,再按Ctrl+q挂起容器
  10. 去本地Navicat绑定mysql

安装Tomcat docker镜像

  1. 访问Tomcat镜像库地址
  2. 在宿主服务器输入docker pull tomcat:9.0.53(建议和本地Tomcat版本号一致,不然会有很多问题)
  3. 使用docker images查看是否安装成功
  4. 运行容器
    1
    2
    3
    4
    # tomcat为自定义容器名字
    # -v $PWD/test:/usr/local/tomcat/webapps/test:将主机中当前目录下的 test 挂载到容器的 /test。也可以不加,后面有办法导入war包
    # webapps文件夹下为运行的网站war包
    docker run -p 8888:8080 -v $PWD/test:/usr/local/tomcat/webapps/test --name tomcat -itd tomcat:9.0.53
  5. 通过 docker ps 命令查看是否安装成功
  6. docker exec -it tomcat /bin/bash进入tomcat容器
  7. 先按Ctrl+p,再按Ctrl+q可以挂起容器,也可以通过输入exit退出(目的在于交互)
  8. 在宿主服务器复制war包到Tomcat的webapps目录下
    1
    docker cp /home/qrcode.war tomcat:/usr/local/tomcat/webapps
  9. 重启tomcat容器docker restart tomcat,访问url即可
问题解决

通过ip:8080的方式出现404错误

通过docker exec -it tomcat /bin/bash进入Tomcat发现webapps为空,但webapps.dist下生成了对应的包

可以通过cp -r webapps.dist/* ./webapps复制到webapps下,然后重启tomcat容器

安装Nginx docker镜像

  1. 访问Nginx镜像库地址
  2. 在宿主服务器输入docker pull nginx:latest
  3. 使用docker images查看是否安装成功
  4. 运行容器
    1
    2
    # nginx为自定义容器名字
    docker run -p 80:80 -p 443:443 --name nginx -itd nginx:latest
  5. 通过 docker ps 命令查看是否安装成功
  6. docker exec -it nginx /bin/bash进入nginx容器
  7. 在自己云服务器管理平台下载SSL证书(nginx版本),并上传到云服务器
  8. 进入’nginx’容器,在/etc/nginx下创建cert文件夹
  9. 输入exit退出容器,将下载的SSL证书放到nginx容器中
    1
    2
    3
    # 记得将7388929_www.jezer05.cn.key 7388929_www.jezer05.cn.pem换成自己SSL所在位置
    docker cp 7388929_www.jezer05.cn.key nginx:/etc/nginx/cert
    docker cp 7388929_www.jezer05.cn.pem nginx:/etc/nginx/cert
  10. 在本地创建nginx.conf文件,并编辑内容
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    user  nginx;
    worker_processes auto;

    error_log /var/log/nginx/error.log notice;
    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;

    upstream tomcat {
    # 这里是反向代理到云服务器的Tomcat容器
    # 这里要换成云服务器的内网IP,不可使用127.0.0.1等
    # 8888改自己Tomcat开放的端口号
    server xx.xx.xx.xx:8888;
    }


    include /etc/nginx/conf.d/*.conf;

    server {
    listen 80;
    server_name jezer05.cn www.jezer05.cn; #需要将jezer05.cn www.jezer05.cn替换成证书绑定的域名。
    rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。
    }

    #以下属性中,以ssl开头的属性表示与证书配置有关。
    server {
    listen 443 ssl;
    #配置HTTPS的默认访问端口为443。
    #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
    #如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
    server_name jezer05.cn www.jezer05.cn; #需要将jezer05.cn www.jezer05.cn替换成证书绑定的域名。
    #root html;
    #index index.html index.htm;
    ssl_certificate cert/7388929_www.jezer05.cn.pem; #需要将7388929_www.jezer05.cn.pem替换成已上传的证书文件的名称。
    ssl_certificate_key cert/7388929_www.jezer05.cn.key; #需要将7388929_www.jezer05.cn.key替换成已上传的证书私钥文件的名称。
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    #表示使用的加密套件的类型。
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型。
    ssl_prefer_server_ciphers on;
    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://tomcat;
    }
    }


    }
  11. nginx.conf复制到nginx容器中
    1
    docker cp nginx.conf nginx:/etc/nginx
  12. 重启nginx容器docker restart nginx,访问url即可