# 准备工作

1、将代码文件复制到 Linux 根目录并创建 ilsgame 文件夹
Code

# 安装环境

# 1、安装 docker 环境

# 更新 yum 源
yum update
# 安装 docker(设置阿里 yum 源)
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 可以查看所有仓库中所有 docker 版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
# 由于 repo 中默认只开启 stable 仓库,故这里安装的是最新稳定版
sudo yum install docker-ce
# 查看 docker 运行状态
service docker status
# 自启动
sudo systemctl enable docker
# 启动 docker
service docker start

安装docker环境

# 2、使用 docker 安装 MySQL 环境,执行 docker_install_mysql.sh 脚本即可(代码如下)

#!/bin/bash
# 拉镜像
docker pull mysql:8.0.35
# 其中 localmysql 是要分配给容器的名称,a.123456 是要为 MySQL root 用户设置的密码,8.0.35 是指定所需 MySQL 版本的标签。请参阅上面的列表以获取相关标签。
# 根目录 mysqldata 文件夹挂载 MySQL 容器内 /var/lib/mysql 数据库文件
docker run --name localmysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=a.123456 -d -v /mysqldata:/var/lib/mysql mysql:8.0.35
# 查看端口是否开启
firewall-cmd --zone=public --query-port=3306/tcp
# 开启端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 刷新防火墙
firewall-cmd --reload

# 3、查看对应镜像和容器是否正常运行

docker image ls

MySQL镜像

docker ps
# -a 代表包括停止的容器
# docker ps -a

MySQL容器

# 4、输入以下命令启用远程访问 MySQL 服务器

# 进入容器并登录,然后输入密码
docker exec -it localmysql mysql -u root -p
# 授权远程访问
GRANT ALL ON *.* TO 'root'@'%';
# 刷新权限
flush privileges;

# 5、根目录下有一个 mysqldata 文件夹是容器内数据库的挂载目录

挂载目录

# SQL 脚本导入

# 1、使用 Navicat 连接 MySQL,密码为 a.123456(docker_install_mysql.sh 脚本内部定义)

# 2、在 Navicat 中执行 ilsgame_dev.sql 脚本文件

# 生成后台代码镜像文件

# 1、执行代码根目录的 build.sh 脚本生成 docker 镜像(代码如下)

#!/bin/bash
# 输出一提示的话
echo "Successfully^_^ ......................................................................................"
# 输出当前地址,可以在日志中看到当前路径,检查一些路径问题
pwd
# 停止容器
docker stop ilsgame-admin
# 删除容器
docker rm ilsgame-admin
# 构建镜像命令
docker build -t ilsgame .
# 更新镜像
docker push ilsgame
# 从镜像运行容器
# --name ilsgame-admin 是容器名称
# ilsgame 是绑定的镜像名称
# 5000 是对外暴露的端口
# 80 是 docker 内部绑定的端口
# -e TZ=Asia/Shanghai 是将容器内部时间设置为上海时间
# 启动命令
# docker run -e TZ=Asia/Shanghai -d -p 5000:80 --restart=always --name ilsgame-admin ilsgame
# 启动 + 挂载,宿主机为 home 平级目录的 uploadFile 文件夹,app 为容器内目录
docker run -e TZ=Asia/Shanghai -d -p 5000:80 --restart=always -v /uploadFiles:/app/wwwroot/uploadFiles --name ilsgame-admin ilsgame

脚本路径
生成容器

# 2、Linux 本机调用 5000 端口(端口在 build.sh 内部定义)

查看状态

# 安装 Nginx

# 1、执行 docker_install_nginx.sh 脚本安装 Nginx(代码如下)

# 拉镜像
docker pull nginx
# 停止容器
docker stop mynginx
# 删除容器
docker rm mynginx
# 删除挂载目录,否则每次更新路径会错乱
rm -rf /ilsgame/mynginx
# 创建挂载目录
mkdir /ilsgame/mynginx -p
# 映射两个端口,需要配置两个站点
docker run --name mynginx -p 80:80 -p 8080:8080 -d --restart=always nginx:latest
# 从容器内拷贝映射文件到本地
docker cp mynginx:/var/log/nginx /ilsgame/mynginx/log
docker cp mynginx:/etc/nginx /ilsgame/mynginx/nginx
docker cp mynginx:/usr/share/nginx/html /ilsgame/mynginx/html
# 停止容器
docker stop mynginx
# 删除容器
docker rm mynginx
# 重新生成容器并挂载到宿主机,原因如下
docker run --name mynginx -p 80:80 -p 8080:8080 -d --restart=always -v /ilsgame/mynginx/log:/var/log/nginx -v /ilsgame/mynginx/nginx:/etc/nginx -v /ilsgame/mynginx/html:/usr/share/nginx/html nginx:latest
# 参考:https://www.cnblogs.com/cyx714/p/16749191.html
# 大概意思就是,要给 nginx 挂载卷,要先有一个配置文件才能挂载,具体做法就是先以不挂载卷的形式正常启动一个 nginx 容器,然后从中 cp 拷贝一份配置文件,删除这个容器,再重新以挂载卷的形式启动一个新容器。
# 所以需要先开容器,然后复制配置文件到本地,然后删除容器重新运行挂载
# 进入容器
# docker exec -it mynginx /bin/bash
# 查看容器的 ip 地址
# docker inspect ilsgame-admin

# 2、查看对应生成的镜像和容器

Nginx镜像
Nginx容器

# 3、将前端静态文件复制到 Linux 下的 /ilsgame/mynginx/html 文件夹内

静态文件

# 4、如果没有图片文件则略过,有图片文件可以将 Banner 文件夹复制到 Linux 根目录下的 uploadFiles 文件夹内

图片文件

# 5、修改 /ilsgame/mynginx/nginx/conf.d 文件夹下的 default.conf

# 后台代理配置加在最后
server {
    listen       8080;
    listen  [::]:8080;
    server_name  localhost;
    # 设置请求大小避免上传图片出现413错误
    client_max_body_size 100m;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        # 映射到docker容器
        # 查看docker容器内的ip地址
        # docker inspect ilsgame-admin
        # 端口为映射命令的内部端口,例如以下命令容器内部端口为80,外部宿主机命令为5000
        # docker run -e TZ=Asia/Shanghai -d -p 5000:80 --restart=always -v /uploadFiles:/app/wwwroot/uploadFiles --name ilsgame-admin ilsgame
        # 80端口可以省略
        proxy_pass   http://172.17.0.4;
    }
}

# 6、重启 nginx 容器输入 docker restart mynginx

# 7、最后查看 80 以及 8080 端口是否正常

# 注意事项:(sh 脚本为执行脚本,md 文件需要按步骤手动执行)

# 1、需要注意修改代码前端配置文件 const.js 以及后台 appsetting.json 中的跨域和配置

# 2、default.conf 文件中 proxy_pass 字段使用的是 docker 容器内部的 ip 地址和端口

# 3、假设你的命令是:

docker run -e TZ=Asia/Shanghai -d -p 5000:80 --restart=always -v /uploadFiles:/app/wwwroot/uploadFiles --name ilsgame-admin ilsgame

# 那么端口就是 80,可以忽略

# 然后输入以下命令查看容器内部 ip 地址

docker inspect ilsgame-admin

# 取 Networks 下的 IPAddress 字段

容器IP

# 最后 proxy_pass 就等于 http://172.17.0.4;

# 扩展命令

# 进入容器内
docker exec -it localmysql /bin/bash
# 复制配置文件,可不进入容器内直接拷贝
docker cp localmysql:/etc/my.cnf /mysqldata/my.cnf
# 修改之后拷贝回去
docker cp /mysqldata/my.cnf localmysql:/etc/my.cnf
# 重启
docker restart localmysql
# MySQL 查询是否区分大小写
show Variables like '%table_names'
# 在 MySQL 中,lower_case_table_names 有三个可能的取值:
# 0: 表名和数据库名区分大小写。
# 1: 表名和数据库名不区分大小写。
# 2: 表名区分大小写,数据库名不区分大小写。
# 安装 vim 和 gdi
docker exec -it ilsgame-admin /bin/bash
apt-get update
apt-get install vim
apt-get install -y libgdiplus && apt-get clean && ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll
更新于 阅读次数

请我喝茶~( ̄▽ ̄)~*

Tianci 微信支付

微信支付

Tianci 支付宝

支付宝