目的
(Ubuntu) 自定义nacos版本并通过docker制作nacos容器, 容器连接宿主机的mysql, mysql配置可参考 使用navicat连接腾讯云服务器mysql数据库-CSDN博客
接下来会使用官方NacosServer的docker镜像build源码来构建nacos镜像,nacos的服务器文件手动下载
步骤
文件下载
build源码:https://github.com/nacos-group/nacos-docker
nacos服务器文件:https://github.com/alibaba/nacos/releases
mysql配置
先把宿主机的mysql配置好,创建一个数据库,运行nacos服务器文件里的nacos-mysql.sql文件。接下来要用到的是:数据库名称,数据库用户名和密码
Dockerfile配置
先把下载好的nacos服务器文件的整个压缩包放到build目录下,我这里下载的是1.4.7
接下来编辑Dockerfile文件,具体请看以下的注释
FROM centos:7.9.2009
LABEL maintainer="pader <huangmnlove@163.com>"
# set environment
ENV MODE="cluster" \
PREFER_HOST_MODE="ip"\
BASE_DIR="/home/nacos" \
CLASSPATH=".:/home/nacos/conf:$CLASSPATH" \
CLUSTER_CONF="/home/nacos/conf/cluster.conf" \
FUNCTION_MODE="all" \
JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk" \
NACOS_USER="nacos" \
JAVA="/usr/lib/jvm/java-1.8.0-openjdk/bin/java" \
JVM_XMS="1g" \
JVM_XMX="1g" \
JVM_XMN="512m" \
JVM_MS="128m" \
JVM_MMS="320m" \
NACOS_DEBUG="n" \
TOMCAT_ACCESSLOG_ENABLED="false" \
TIME_ZONE="Asia/Shanghai" \
# 配置数据库为mysql
SPRING_DATASOURCE_PLATFORM="mysql" \
# nacos容器访问宿主机的ip默认是172.17.0.1
MYSQL_SERVICE_HOST="172.17.0.1" \
# 宿主机mysql的端口
MYSQL_SERVICE_PORT="3306" \
# 刚才创建的数据库的名称
MYSQL_SERVICE_DB_NAME="nacos" \
# 如果mysql版本小于8,最后的时区参数要去掉
MYSQL_SERVICE_DB_PARAM="characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC" \
# mysql用户名
MYSQL_SERVICE_USER="root" \
# mysql密码
MYSQL_SERVICE_PASSWORD="1234"
# 这里指定你的nacos版本
ARG NACOS_VERSION=1.4.7
ARG HOT_FIX_FLAG=""
WORKDIR $BASE_DIR
# 把nacos文件拷贝到容器里的home目录下
COPY nacos-server-${NACOS_VERSION}.tar.gz /home
RUN set -x \
&& yum update -y \
&& yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel iputils nc vim libcurl \
&& yum clean all
# 这里下载比较慢,所以使用自己下载的
# RUN curl -SL https://github.com/alibaba/nacos/releases/download/${NACOS_VERSION}${HOT_FIX_FLAG}/nacos-server-${NACOS_VERSION}.tar.gz -o /home/nacos-server.tar.gz \
# 这里nacos-server后面要添加版本,原来的没有
RUN tar -xzvf /home/nacos-server-${NACOS_VERSION}.tar.gz -C /home \
&& rm -rf /home/nacos-server-${NACOS_VERSION}.tar.gz /home/nacos/bin/* /home/nacos/conf/*.properties /home/nacos/conf/*.example /home/nacos/conf/nacos-mysql.sql \
&& ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime && echo $TIME_ZONE > /etc/timezone
ADD bin/docker-startup.sh bin/docker-startup.sh
ADD conf/application.properties conf/application.properties
# set startup log dir
RUN mkdir -p logs \
&& touch logs/start.out \
&& ln -sf /dev/stdout start.out \
&& ln -sf /dev/stderr start.out
RUN chmod +x bin/docker-startup.sh
EXPOSE 8848
ENTRYPOINT ["bin/docker-startup.sh"]
容器访问宿主机请见该博客的方法三:【docker知识】从容器中如何访问到宿主机_docker容器访问宿主机-CSDN博客
制作镜像并启动
把build目录拷贝到服务器上,当然以上操作直接在服务器上完成也是可以的
cd到build目录下,自定义你的镜像名称,注意最后有个.
docker build -t nacos-test .
镜像内还需要下载jdk,等待后镜像制作完成,运行容器
docker run -d --name nacos-test-start -p 8848:8848 nacos-test
使用ip:8848/nacos/#/login即可访问,默认用户名和密码为nacos