使用docker搭建node egg服务器
小记自己使用docker第一次搭建egg服务器记录
docker+egg+nginx+redis+mysql
安装docker
- 安装系统工具
yum install yum-utils device-mapper-persistent-data lvm2 - 添加软件源信息
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo - 安装docker
yum install docker-ce docker-ce-cli containerd.io - 启动docker
systemctl start docker
安装mysql
有需要在本机安装mysql的按照以下步骤操作,使用docker安装mysql需注意数据持久化!!!
- 下载mysql镜像
docker pull daocloud.io/library/mysql:5.7.5我这里选择了国内的镜像源,也可直接docker pull mysql:5.7.5 - 查看镜像是否下载成功
docker images - 启动并配置mysql容器
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 YourImageId,注意此处的YourImageId为你自己下载的mysql镜像id,即第二步命令中查看到的imageId - 查看mysql是否启动成功,
docker ps - 进入mysql容器命令行
docker exec -it YouContainerId sh - 进入mysql
mysql -u root -p - 退出使用
exit; - 如果启动失败,使用
docker logs -f YourContainerId查看docker日志文件 - 我使用轻量应用服务器配置过程中,出现过mysql容器启动后自动停止,经查日志发现是swap分区没有配置,参考了文档解决,小记一下解决方法
- 查看内存
free,发现swap是0… sudo dd if=/dev/zero of=/swapfile bs=1M count=1024sudo mkswap /swapfilesudo swapon /swapfile
安装redis
- 下载redis镜像
docker pull daocloud.io/library/redis:6.0.5,也可docker pull redis:6.0.5 - 运行redis
docker run -d -p 6379:6379 --name redis YourContainerId
安装node
- 下载node镜像
docker pull node:16.0.0
安装git
- 安装git
yum install git - 配置git秘钥
ssh-keygen -t rsa -C "xxxxx@xxxxx.com" - 配置git用户
git config --global user.name "username"邮箱git config --global user.email "email"
安装nginx
- 下载nginx镜像
docker pull daocloud.io/library/nginx:1.12.0也可docker pull nginx:1.12.0 - 本地新建nginx文件,做基础配置
- 进入根目录
cd ~> - 创建
cd ~>mkdir nginx>cd nginx>mkdir conf.d>cd conf.d>touch default.conf>vi default.conf - 输入或复制以下内容

- 创建nginx.con
cd ~/nginx>vi nginx.conf,复制以下内容,
原因:docker开启nginx使用的用户时nginx,需更改用户为root,并将配置映射至容器中
参考文章

- 启动nginx
docker run --name nginx -d -p 8080:8080 -v /root/nginx/log:/var/log/nginx -v /root/nginx/conf.d:/etc/nginx/conf.d -v /root/nginx/dist:/usr/share/nginx/dist -v /root/public:/root/public -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf YourContainerId
- 映射1:nginx日志
- 映射2:nginx配置
- 映射3:前端文件
- 映射4:存储的静态文件
- 映射5:nginx.conf(为更改nginx启动用户)
- 查看nginx是否启动成功
docker ps
启动后端服务
- 下载node镜像
docker pull node:16.0.0 - git拉取后端代码
git clone yourGitAddress - 修改package.json中的启动命令,例如(需注意要去除–daemon,并优先npm run tsc):

- 进入后端根目录,创建Dockfile
touch Dockfile - 编辑Dockerfile(此处FROM node会自动拉取node镜像)

- 上传前端包到~/nginx,可使用ftp,window上传文件命令行参考文档
- 根据后端文件Dockerfile生成docker镜像
docker build -t service:1.0 ~/service - 查看后端镜像
docker ps - 启动后端容器
docker run --name service -d -p 7010:7010 -v /root/public:/egg/public YourContainerId,此处的映射为我服务器的文件存储位置(我的文件为存储至服务器本地,受公司限制,也可存储至云,则nginx、后端服务不再需要该映射),将其映射到容器方便读写,另外建议将egg的log日志也映射到容器中,保证日志文件不会丢失 - 查看后端容器
docker ps
- 注意后端config配置中的mysql、redis等地址,不要使用localhost/127.0.0.1,会请求到该容器中的端口,无法请求到实际宿主本机中的端口,需变更为内网地址如:192.168.55.55:3306
持续更新,小白初学,大神勿喷
参考文章

1万+




被折叠的 条评论
为什么被折叠?



