# 准备工作
1、将代码文件复制到 Linux 根目录并创建 ilsgame 文件夹
# 安装环境
# 1、安装 docker 环境
| |
| yum update |
| |
| 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 |
| |
| yum list docker-ce --showduplicates | sort -r |
| |
| sudo yum install docker-ce |
| |
| service docker status |
| |
| sudo systemctl enable docker |
| |
| service docker start |
# 2、使用 docker 安装 MySQL 环境,执行 docker_install_mysql.sh 脚本即可(代码如下)
| #!/bin/bash |
| |
| docker pull mysql:8.0.35 |
| |
| |
| 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、查看对应镜像和容器是否正常运行
# 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 |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| 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 |
| |
| |
| |
| |
| |
| |
| |
| |
| |
# 2、查看对应生成的镜像和容器
# 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 字段
# 最后 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 |
| |
| show Variables like '%table_names' |
| |
| |
| |
| |
| |
| |
| |
| 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 |