欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

将 nacos 应用程序手动部署到 docker 容器的方式

最编程 2024-10-15 14:12:16
...

一般情况Docker 容器中直接拉取naaocs镜像就可以部署启动了,特殊情况下,需要修改nacos源码,然后打包成应用程序,把此用用程序部署到docker容器里面,这时候需要编写Dockerfile文件或者docker-compose.yml 配置文件去创建新的镜像去启动,下面我们分享一下具体操作。

1、把nacos应用程序放到linux服务器固定目录

注意:前提是此时进入bin目录,执行:./startup.sh -m standalone 命令可以正常启动和访问,否则部署到容器里面也是不可能的。 

2、创建Dockerfile文件

linux环境进入nacos 应用程序的根目录下创建一个Dockerfile

touch Dockerfile

通过vim命令编写内容:

# 前提是已经有了JDK镜像环境
FROM adoptopenjdk/openjdk11

# 设置时区为 Asia/Shanghai
ENV TZ=Asia/Shanghai

# 设置工作目录
WORKDIR /nacos

# 将本地文件复制到镜像中
COPY ./bin /nacos/bin
COPY ./conf /nacos/conf
COPY ./data /nacos/data
COPY ./logs /nacos/logs
COPY ./target /nacos/target

# 创建日志目录
RUN mkdir -p /nacos/logs

# 暴露 Nacos 的默认端口
EXPOSE 8848

#  挂载日志目录
VOLUME ["/nacos/logs"]

# 启动 Nacos 的命令
CMD ["/bin/bash", "-c", "/nacos/bin/startup.sh -m standalone && tail -f /nacos/logs/start.out"]
# CMD["bash", "/nacos/bin/startup.sh", "-m", "standalone"]
# ENTRYPOINT ["bash", "/nacos/bin/startup.sh", "-m", "standalone"]

3、构建 Docker 镜像

docker build -t  yd-nacos-13 .

如果有相同的名称,会覆盖掉以前的镜像。 

4、运行 Docker 容器

镜像构建完成后,使用以下命令运行 Nacos 的 Docker 容器:

docker run -d -p 8848:8848 -v /nacos/logs:/nacos/logs yd-nacos-13

-d 表示后台运行容器。

-p 8848:8848 表示将本地的 8848 端口映射到 Docker 容器的 8848 端口。

--name nacos-server 为容器指定名称。 

5、如果4启动失败(临时排查问题方案)

用其他方式启动排查:

docker run -it -p 8848:8848 -v /nacos/logs:/nacos/logs yd-nacos-3 /bin/bash 

# 进入伪容器里面后在容器内部启动
./startup.sh -m standalone

 参数解释:

1). docker run
启动一个新的 Docker 容器。
2). -it
-i:保持标准输入打开,即使没有连接。
-t:为容器分配一个伪终端,这样可以与容器内交互。
3). -p 8848:8848
端口映射:将宿主机的 8848 端口映射到容器的 8848 端口。
访问宿主机的 8848 端口时,会被转发到容器内的 8848 端口。
4). -v /nacos/logs:/nacos/logs
目录挂载:将宿主机的 /nacos/logs 目录挂载到容器内的 /nacos/logs 目录。
挂载后的两个目录会同步变化,方便持久化日志数据。
5). yd-nacos-3
这是镜像的名称或 ID,表示你要使用 yd-nacos-3 这个镜像来启动容器。
6). /bin/bash
容器启动命令:在容器中执行 /bin/bash,以进入交互式 Bash 终端。

启动后查看日志,看看是否有报错。如果成功启动,说明,整体流程没有大问题。

6、查看 日志

docker logs <container_id>

7、进入容器内部调试如果有需要

docker exec -it <container_id> /bin/bash

#退出
exit;

#查看时间
date

8、删除无用的镜像

  #每次删除一个
  docker rmi test-nacos

9、删除无用的容器列表

  docker stop 534710640c10 bc7603f3ade

  docker rm 534710640c10 bc7603f3ade9

10、调试主机和容器的时间一致

1)挂载主机时区文件到容器内

docker run -it -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro your-image

2)在 Dockerfile 中设置时区

# 设置时区为 Asia/Shanghai
ENV TZ=Asia/Shanghai

然后重建镜像并运行 

3)使用环境变量设置容器内时区

运行容器时直接通过 -e TZ 参数指定时区。

docker run -it -e TZ=Asia/Shanghai your-image

4)同步主机和容器时间

如果容器的时间有误差,可以在容器内使用 ntpdate 工具同步时间

在容器内安装 ntpdate

apt-get update && apt-get install -y ntpdate

手动同步时间

ntpdate time.windows.com

 到此,nacos应用程序部署到docker容器的方式分享完毕,后面我们会更新优化一下细节,敬请期待!

推荐阅读