首先一点需要的linux命令
启动防火墙
sudo ufw enable
查看防火墙端口状态
sudo ufw status
查看端口状态
netstat -tuln
开放端口
sudo ufw allow 3000/tcp
禁用防火墙
sudo ufw disable
如果服务放在虚拟机中
Ubuntu访问地址为 通过命令:
ip addr show
打印出来的ens32路由下的inet 后面的地址
创建Docker文件(Dockerfile)
Docker也是一个虚拟机,所以是将项目放到了Docker虚拟机中,在运行的时候需要端口绑定到主机之类的操作
touch Dockerfile
在里面写入(官方文档的方案,不同的服务可以有不同的方案)
# syntax=docker/dockerfile:1
FROM node:18-alpine
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
EXPOSE 3000
构建项目,最后的句点.代表从当前路径下查找项目
docker build -t 自己起的项目名 .
比如给SpringBoot项目jar包写Dockerfile
# 使用 JDK 17 基础镜像 FROM openjdk:17 # 设置工作目录 # WORKDIR /app # 将本地的 h5GamesServer-1.0.jar 文件添加到镜像中 #ADD ./target/h5GamesServer-1.0.jar h5-server.jar # 复制项目的 JAR 文件到容器中 #COPY target/h5GamesServer-1.0.jar /app/h5-server.jar COPY h5GamesServer-1.0.jar /h5-server.jar # 暴露应用使用的端口(根据实际需求修改,例如8080) EXPOSE 8081 # 启动命令 ENTRYPOINT ["java", "-jar" ,"/h5-server.jar"] RUN ls -l /app
这样写就是要把jar包和Dockerfile一起拉进服务器中,运行
sudo docker build -t h5service .
来创建镜像,通过 sudo docker images 来查看所有镜像
再通过下面命令来运行
sudo docker run -d\
--name h5service\
-p 8081:8080\
--network myh5\
h5service
启动(第一种指定绑定的ip,第3种绑定所有ip)
第一个端口表示Docker容器内的端口
第二个端口表示绑定到主机上的端口
docker run -dp 127.0.0.1:3000:3000 项目名
docker run -dp 0.0.0.0:3000:3000 项目名
docker run -dp 3000:3000 项目名
容器
运行容器
sudo docker run -d --name tomcat -p 8081:8080 tomcat:9.0
运行同时加入自定义网络
sudo docker run -d --name tomcat -p 8081:8080 --network myh5 tomcat:9.0
查看容器
查看id
sudo docker ps//正在运行
sudo docker ps -a//所有
查看详细状态(包括网络)
sudo docker inspect tomcat
查看日志
sudo docker logs -f c6daf37e3285
关闭容器
docker stop <the-container-id>
删除
docker rm <the-container-id>
镜像
查看镜像
sudo docker images
保存镜像
保存文件名称:-o
镜像名称:tomcat:9.0
sudo docker save -o tomcat.tar tomcat:9.0
docker save -o E://h5service.tar h5service //保存到指定路径E盘根目录
删除镜像
sudo docker rmi tomcat:latest
加载镜像
加载文件名称:-i
sudo docker load -i tomcat.tar
上传项目到 Docker Hub(类似git)
创建一个公共仓库
回到命令行窗口,登录
docker login -u 用户名
创建标签tag
docker tag 项目名 用户名/仓库名
docker tag getting-started YOUR-USER-NAME/getting-started
上传
docker push YOUR-USER-NAME/getting-started
具体代码可以在仓库右边看到
Volume数据库存储
随着容器一起,容器删除将会把数据库一起删除,并且容器之间不共享数据库
创建数据库(sqllite)
docker volume create (数据库名)todo-db
使用数据库
要使用数据库必须在运行一次,标明使用什么类型(type)的什么名字(src)的数据库放在什么位置(target)
docker run -dp 127.0.0.1:3000:3000
--mount type=volume,
src=todo-db,
target=/etc/todos getting-started
bind mounts绑定装载
热更新代码
使用文档中的代码文件可以正常运行以下代码,第一次会下载node18-alpine,第二次运行就正常
docker run -dp 127.0.0.1:3000:3000 \
-w /app --mount type=bind,src="$(pwd)",target=/app \
node:18-alpine \
sh -c "yarn install && yarn run dev"
部署mysql
后台运行:run -d
容器名称:--name
参数:-e
端口映射:-p 虚拟机端口:容器内端口
执行命令
sudo docker run -d\
--name mysql\
-e MYSQL_ROOT_PASSWORD=123456\
-p 3306:3306
mysql
命令行连接
sudo docker exec -it mysql mysql -u root -p
Navicat连接
先用ssh或其他的连接方式连接服务器机器
然后回到第一个选项连接mysql
Docker内部网络
查看所有网络
sudo docker network ls
创建自定义网络
sudo docker network create myh5
将容器添加进自定义网络
sudo docker network connect myh5 tomcat