天津网站运营建筑工程管理软件

张小明 2026/1/15 14:06:55
天津网站运营,建筑工程管理软件,衡水企业网站制作公司,wordpress移动主题设计前言 随着云计算和微服务架构的广泛应用#xff0c;应用部署的标准化、可移植性与高效运维成为现代软件开发的关键挑战。Docker 作为轻量级容器化技术的代表#xff0c;通过将应用程序及其依赖环境打包为独立、可移植的镜像#xff0c;极大地简化了“一次构建#xff0c;随…前言随着云计算和微服务架构的广泛应用应用部署的标准化、可移植性与高效运维成为现代软件开发的关键挑战。Docker 作为轻量级容器化技术的代表通过将应用程序及其依赖环境打包为独立、可移植的镜像极大地简化了“一次构建随处运行”的目标。在 Docker 生态中Dockerfile 是构建自定义镜像的核心工具。它以声明式的方式定义镜像的每一层——从基础操作系统、运行时环境到应用代码确保构建过程可重复、可版本控制并为持续集成/持续交付CI/CD提供坚实基础。然而真实世界的应用往往由多个相互依赖的服务组成如 Web 服务器、数据库、缓存等。此时仅靠单个容器已无法满足复杂系统的部署需求。Docker Compose 应运而生它通过一个简洁的 YAML 配置文件实现多容器应用的一键编排统一管理服务依赖、网络通信、数据卷挂载及启动顺序显著降低本地开发、测试与演示环境的搭建成本。本实践将围绕 基于 Dockerfile 构建自定义镜像 与 使用 Docker Compose 编排多服务应用 两大核心技能展开通过搭建包含 Nginx、Tomcat、MySQL 等组件的典型 Web 系统深入理解容器化应用的构建、互联与协同工作机制为后续学习 Kubernetes 等高级编排平台奠定坚实基础。镜像的分层结构镜像分层Docker 镜像不是单一文件而是由多层文件系统组成。每执行一条 Dockerfile 指令都会生成新的镜像层。容器启动时会在镜像的只读层上添加一层可读写层。镜像缓存Docker 会缓存每一层的镜像如果某一层的内容没有变化则会复用缓存层以提高构建效率。总结Docker 镜像分层是 “只读增量堆叠 共享未改内容”操作常用指令FROM指定新镜像基于的基础镜像Dockerfile 的第一条指令必须为 FROM 。示例FROM debian:7 → 基于 Debian 7 系统作为镜像的基础MAINTAINER指定镜像的维护者信息示例Docker 官方已推荐用 LABEL maintainer“xxxxxx.com” 替代更灵活比如LABEL maintainer“testuser testexample.com”。RUN执行命令并将结果提交到镜像中。常用来安装软件包、修改配置等。示例RUN apt-get update apt-get install -y nginx → 更新源并安装 Nginx。ENTRYPOINT设置容器启动时默认执行的命令示例ENTRYPOINT [“nginx”] → 容器启动必执行 nginx 命令。CMD容器启动时执行的默认命令。 CMD 指令会被 docker run 命令后指定的命令覆盖。示例CMD [“-g”, “daemon off;”] → 给 nginx 加默认参数让 nginx 前台运行如果执行 docker run 镜像名 -g “daemon on;”就会覆盖这个 CMD 参数。EXPOSE声明容器内的端口示例EXPOSE 80 443 → 告诉使用者这个容器会用到 80HTTP和 443HTTPS端口运行时需手动加 -p 8080:80 映射。ENV设置环境变量后续指令RUN/COPY/ENTRYPOINT 等可通过 变量名引用也能在容器运行时使用示例 E N V N G I N X V E R S I O N 1.12.2 → 后续 R U N 中可用 n g i n x − 变量名 引用也能在容器运行时使用 示例ENV NGINX_VERSION1.12.2 → 后续 RUN 中可用 nginx-变量名引用也能在容器运行时使用示例ENVNGINX VERSION1.12.2→后续RUN中可用nginx−{NGINX_VERSION}.tar.gz 引用版本号改版本时只需改 ENV 一行。ADD将文件或目录从宿主机复制到镜像中支持从 URL 下载文件并能自动解压归档文件示例ADD nginx.tar.gz /usr/local/ → 把本地压缩包复制到镜像并自动解压ADD https://xxx.com/file.txt /tmp/ → 从 URL 下载文件到镜像的 /tmp 目录。COPY将本地文件或目录复制到镜像中示例COPY nginx.conf /etc/nginx/ → 把本地的 nginx 配置文件复制到镜像指定目录VOLUME在容器中创建挂载点示例VOLUME [“/var/log/nginx”] → 容器运行时/var/log/nginx 目录的数据会持久化到宿主机卷中。USER设置容器内运行命令时的用户示例先创建用户RUN useradd -r nginx切换用户USER nginx → 后续命令都以 nginx 普通用户运行提高安全性WORKDIR设置后续指令的工作目录示例WORKDIR /tmp → 后续 RUN/COPY/ADD 等指令都在 /tmp 目录下执行无需写绝对路径。ONBUILD设置当该镜像作为基础镜像时后续 Dockerfile 执行的命令示例ONBUILD COPY custom.conf /etc/nginx/ → 若有另一个 Dockerfile 基于这个镜像构建会自动把它本地的 custom.conf 复制到镜像中。HEALTHCHECK设置容器的健康检查–interval30s每 30 秒检查一次–timeout5s检查命令超时时间 5 秒–retries3失败 3 次后标记为不健康。示例HEALTHCHECK --interval30s CMD curl -f http://localhost:80 || exit 1 → 每 30 秒用 curl 访问本地 80 端口访问失败则返回 1标记不健康。基于指令的完整示例# 1. FROM基础镜像CentOS 7 FROM centos:7 # 2. MAINTAINER维护者新版推荐用 LABEL这里保留 MAINTAINER testuser testexample.com # 3. ENV环境变量后续指令引用. doker中定义变量 # nginx版本 和 安装路径 ENV NGINX_VERSION1.12.2 \ WORK_PATH/usr/local/nginx # 4. WORKDIR设置工作目录提前创建避免后续 cd 出错 # 进入/opt目录在该目录下下载资源并作后续操作 #RUN/COPY/ADD/ENTRYPOINT 等所有指令都会以 /tmp 作为 “当前工作目录”。 WORKDIR /opt # 5. RUN安装依赖修复包管理器包名新增curl用于健康检查 RUN yum install -y gcc make pcre-devel zlib-devel wget curl \ # 下载并解压 Nginx 源码 wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz \ tar -zxf nginx-${NGINX_VERSION}.tar.gz \ # 编译安装 Nginx cd nginx-${NGINX_VERSION} \ ./configure --prefix${WORK_PATH} \ make make install \ # 清理临时文件所有/tmp操作完成后清理 yum clean all rm -rf /tmp/* # 6. COPY复制本地配置文件需确保本地有nginx-default.conf文件 #「把你本地电脑里的 nginx-default.conf 文件复制到正在构建的 Docker 镜像里 # 的 ${WORK_PATH}/conf/ 目录下并重命名为 nginx.conf」。 COPY ./nginx-default.conf ${WORK_PATH}/conf/nginx.conf # 7. ADD下载密钥解压模块修复/opt路径清理后重新创建/opt # 从指定的 URL 下载 nginx_signing.key 这个密钥文件直接放到镜像里的 /opt/ 目录下并重命名为 nginx.key如果镜像里没有 /opt 目录ADD 会自动创建。 # 为什么要下载这个密钥 #这是 Nginx 官方的签名密钥后续如果需要验证 Nginx 安装包的合法性比如防止包被篡改就可以用这个密钥做校验是构建镜像时的 “安全操作”。 #和 COPY 的区别COPY 只能复制本地文件没法下载网络文件这是 ADD 独有的功能。 ADD https://nginx.org/keys/nginx_signing.key /opt/nginx.key #给 Nginx 加装额外模块比如防盗链、缓存模块这些模块打包成压缩包后用 ADD 一键复制 解压直接放到 Nginx 的模块目录里启动时就能加载。 ADD ./nginx-modules.tar.gz ${WORK_PATH}/modules/ # 8. EXPOSE声明端口 # 写了 EXPOSE 80 443不代表容器启动后宿主机就能访问 80/443 端口 # 想要宿主机能访问必须在启动容器时加 -p 参数 # docker run -p 8080:80 -p 4433:443 你的镜像名 #「给人看」其他开发者拿到你的镜像看 docker inspect 镜像名 就能看到 EXPOSE 80 443立刻知道这个容器需要映射 80/443 端口 EXPOSE 80 443 # 9. VOLUME创建挂载点放在文件复制后避免覆盖 # 容器里 Nginx 的日志会直接写到 /宿主机/日志目录 #网页文件也会和 /宿主机/网页目录 同步删了容器宿主机里的日志 / 网页还在。 VOLUME [/var/log/nginx, ${WORK_PATH}/html] # 10. USER创建并切换用户CentOS 7 需确保/sbin/nologin存在 RUN useradd -r -s /sbin/nologin nginx # 从这行开始Dockerfile 后续所有指令HEALTHCHECK、ENTRYPOINT、CMD #以及容器启动后运行的 Nginx 进程都会以 nginx 用户的身份执行而不是默认的 root。 USER nginx # 11. HEALTHCHECK健康检查修复curl依赖调整参数 # Docker 会每隔 30 秒检查一次容器里的 Nginx 是否真的在正常工作单次检查超时 5 秒连续 3 次失败就标记容器 “不健康”方便你及时发现 Nginx 挂了。 HEALTHCHECK --interval30s --timeout5s --retries3 \ CMD curl -f http://localhost:80 || exit 1 # 12. ENTRYPOINT修复变量引用用shell格式解析环境变量 #容器启动时必须执行的 “主命令” 是「启动 Nginx」而且要通过 shell 解析环境变量还能接收后续的参数比如 CMD 传的参数。 ENTRYPOINT [/bin/sh, -c, ${WORK_PATH}/sbin/nginx $] # 13. CMD默认参数前台运行Nginx # 给 ENTRYPOINT 里的 Nginx 命令传默认参数让 Nginx 以 “前台运行” 的方式启动如果 docker run 时手动加参数会替换掉这个默认参数。 CMD [-g, daemon off;] # 14. ONBUILD触发器最后声明 # 当其他 Dockerfile 把这个镜像当作基础镜像时才会自动执行这个指令。 # 把「引用者 Dockerfile 同目录下的 custom.conf」复制到镜像的 Nginx 子配置目录 ONBUILD COPY ./custom.conf ${WORK_PATH}/conf/conf.d/ # 15.构建镜像 docker build -t my-web-server .构建镜像实战构建SSH镜像mkdir /opt/sshdcd /opt/sshd一定要将yum源文件和Dockerfile 文件放在同一个目录下cp /etc/yum.repos.d/CentOS-Base.repo ./vim Dockerfile#1第一行必须指明基于的基础镜像 FROM centos:7 #2作者信息 MAINTAINER 维护者名称 维护者邮箱 MAINTAINER sjj sjjexample.com #3复制本地文件到容器中 ADD CentOS-Base.repo /etc/yum.repos.d/ #4镜像的操作指令 #清理 yum 缓存因为默认镜像可能有旧的缓存清理后避免干扰后续操作 RUN yum clean all #生成新的 yum 缓存加快后续 yum install 的速度不用每次安装都重新下载元数据。 RUN yum makecache RUN yum -y install openssh* net-tools lsof telnet passwd RUN echo 123456 | passwd --stdin root #不使用PAM认证 # PAM 是认证模块关闭它可以避免一些 SSH 登录的权限问题比如容器内 PAM 配置不全导致登录失败。 RUN sed -i s/UsePAM yes/UsePAM no/g /etc/ssh/sshd_config #取消pam限制 # 注释掉 pam.d/sshd 里的 session required pam_loginuid.so 这一行pam_loginuid.so 会检查登录用户的 UID # 容器内运行 sshd 时可能因为 UID 映射问题报错注释掉解决登录问题。 RUN sed -ri /^session\srequired\spam_loginuid.so/ s/^/#/ /etc/pam.d/sshd #生成密钥认证文件 #生成 SSH 服务需要的 RSA 等密钥文件sshd 启动时必须有这些密钥否则会启动失败-A 是自动生成所有需要的密钥类型。 RUN ssh-keygen -t rsa -A #创建 root 用户的.ssh 目录存放 SSH 公钥 / 私钥、authorized_keys 等设置所属用户为 root权限 700只有 root 能读写执行权限不对会导致 SSH 登录时密钥认证失败。 RUN mkdir -p /root/.ssh chown root.root /root chmod 700 /root/.ssh #5声明端口 #声明容器暴露 22 端口SSH 默认端口只是声明不会自动映射启动容器时需要 - p 2222:22 这样的参数映射。 EXPOSE 22 #6/usr/sbin/sshd -D 用于前台启动sshd服务 # -D是sshd自带的命令否则会自动关闭掉 # 让 sshd 在前台运行站在容器内的视角就是前台运行。宿主机视角有-d决定 #启动 sshd 服务-D 参数是让 sshd 在前台运行不后台守护因为 Docker 容器的生命周期和前台进程绑定后台运行的话容器会秒退 # 例如启动容器镜像名后加 /usr/sbin/sshd覆盖原 CMD # docker run -d --name sshd-override sshd:centos /usr/sbin/sshd 这个时候容器会退出因为主进程执行完退出 CMD [/usr/sbin/sshd , -D]生成镜像# 例如在/opt/sshd/目录下执行的构建语句就会在这个目录找Dockerfile文件等资源 # Dockerfile 名字不能变构建多个镜像需要创建好目录在不同目录下执行构建语句 docker build -t sshd:centos . # 如果Dockerfile文件某个路径错了重新执行即可启动容器并修改root密码docker run -d -P sshd:centosdocker ps -assh localhost -p 49153 #映射的端口号。 ssh -p 访问本地的端口构建Systemctl镜像构建Systemctl镜像mkdir /opt/systemctlcd /opt/systemctlvim Dockerfile生成镜像docker build -t systemd:centos .启动容器并挂载宿主机目录挂载到容器中和进行初始化#–privileged使container内的root拥有真正的root权限。否则container内的root只是外部的一个普通用户权限。docker run --privileged -d -P -v /sys/fs/cgroup:/sys/fs/cgroup:ro systemd:centos /sbin/initdocker ps -a//进入容器docker exec -it a1ea25ff5ace bashsystemctl status sshd构建nginx镜像mkdir /opt/nginxcd /opt/nginx/cp /opt/nginx-1.20.2.tar.gz /opt/nginxvim Dockerfile#基于基础镜像 FROM centos:7 #用户信息 MAINTAINER this is nginx image sjjqq.com ADD CentOS-Base.repo /etc/yum.repos.d/ RUN yum clean all RUN yum makecache #添加环境包 RUN yum -y install pcre-devel zlib-devel gcc gcc-c make RUN useradd -M -s /sbin/nologin nginx #上传nginx软件压缩包并解压 ADD nginx-1.20.2.tar.gz /opt/ #指定工作目录 WORKDIR /opt/nginx-1.20.2 RUN ./configure \ --prefix/usr/local/nginx \ --usernginx \ --groupnginx \ --with-http_stub_status_module make make install #设置环境变量$PATH保留容器系统原来的PATH ENV PATH /usr/local/nginx/sbin:$PATH #指定http和https端口 EXPOSE 80 EXPOSE 443 RUN echo daemon off; /usr/local/nginx/conf/nginx.conf #关闭 nginx 在后台运行 # CMD [/usr/local/nginx/sbin/nginx, -g, daemon off;] (会报错) CMD [/usr/local/nginx/sbin/nginx]//创建新镜像docker build -t nginx:centos .docker run -d -P nginx:centos构建tomcat镜像mkdir /opt/tomcatcd /opt/tomcatcp /opt/jdk-8u91-linux-x64.tar.gz /opt/tomcatcp /opt/apache-tomcat-8.5.16.tar.gz /opt/tomcatvim DockerfileFROM centos:7 MAINTAINER this is tomcat image hmj ADD jdk-8u91-linux-x64.tar.gz /usr/local/ WORKDIR /usr/local/ RUN mv jdk1.8.0_91 /usr/local/java ENV JAVA_HOME /usr/local/java ENV JRE_HOME ${JAVA_HOME}/jre ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib ENV PATH $JAVA_HOME/bin:$PATH ADD apache-tomcat-8.5.16.tar.gz /usr/local/ WORKDIR /usr/local/ RUN mv apache-tomcat-8.5.16 /usr/local/tomcat EXPOSE 8080 #CMD [/usr/local/tomcat/bin/catalina.sh,run] # catalina.sh run 是 Tomcat 专门的前台运行模式 开启前台运行模式 # ENTRYPOINT 不会被覆盖 ENTRYPOINT [/usr/local/tomcat/bin/catalina.sh,run] CMD [/usr/local/tomcat/bin/startup.sh,start]//创建新镜像docker build -t tomcat:centos .docker run -d --name tomcat01 -p 1216:8080 tomcat:centos构建mysql镜像mkdir /opt/mysqldcd /opt/mysqldvim DockerfileFROM centos:7 MAINTAINER sjj sjjqq.com RUN yum -y install ncurses ncurses-devel bison cmake pcre-devel zlib-devel gcc gcc-c make RUN useradd -M -s /sbin/nologin mysql ADD boost_1_59_0.tar.gz /usr/local/src/ ADD mysql-5.7.17.tar.gz /usr/local/src/ RUN mv /usr/local/src/boost_1_59_0 /usr/local/boost WORKDIR /usr/local/src/mysql-5.7.17/ RUN cmake \ -DCMAKE_INSTALL_PREFIX/usr/local/mysql \ -DMYSQL_UNIX_ADDR/usr/local/mysql/mysql.sock \ -DSYSCONFDIR/etc \ -DSYSTEMD_PID_DIR/usr/local/mysql \ -DDEFAULT_CHARSETutf8 \ -DDEFAULT_COLLATIONutf8_general_ci \ -DWITH_EXTRA_CHARSETSall \ -DWITH_INNOBASE_STORAGE_ENGINE1 \ -DWITH_ARCHIVE_STORAGE_ENGINE1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE1 \ -DWITH_PERFSCHEMA_STORAGE_ENGINE1 \ -DMYSQL_DATADIR/usr/local/mysql/data \ -DWITH_BOOST/usr/local/boost \ -DWITH_SYSTEMD1;make -j4;make install ADD my.cnf /etc/my.cnf EXPOSE 3306 RUN chown -R mysql:mysql /usr/local/mysql/;chown mysql:mysql /etc/my.cnf WORKDIR /usr/local/mysql/bin/ RUN ./mysqld \ --initialize-insecure \ --usermysql \ --basedir/usr/local/mysql \ --datadir/usr/local/mysql/data;cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/;systemctl enable mysqld ENV PATH/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH VOLUME [ /usr/local/mysql ] CMD [/usr/sbin/init]vim my.cnf[client] port 3306 default-character-setutf8 socket /usr/local/mysql/mysql.sock [mysql] port 3306 default-character-setutf8 socket /usr/local/mysql/mysql.sock [mysqld] user mysql basedir /usr/local/mysql datadir /usr/local/mysql/data port 3306 character_set_serverutf8 pid-file /usr/local/mysql/mysqld.pid socket /usr/local/mysql/mysql.sock server-id 1 sql_modeNO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES创建新镜像docker build -t mysql:centos .启动容器并进行初始化docker run --namemysql_server -d -P --privileged mysql:centos进入容器授权远程连接 mysqldocker exec -it mysql_server /bin/bashmysql -u root -p grant all privileges on *.* to root% identified by 123456; grant all privileges on *.* to rootlocalhost identified by 123456; flush privileges;Docker Compose 编排概述Docker-Compose项目是Docker官方的开源项目负责实现对Docker容器集群的快速编排。Docker-Compose将所管理的容器分为三层分别是工程project服务service以及容器container。Docker-Compose运行目录下的所有文件docker-compose.ymlextends文件或环境变量文件等组成一个工程若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务每个服务中定义了容器运行的镜像、参数、依赖。一个服务当中可包括多个容器实例Docker-Compose并没有解决负载均衡的问题因此需要借助其它工具实现服务发现及负载均衡比如Consul。Docker-Compose的工程配置文件默认为docker-compose.yml可通过环境变量COMPOSE_FILE或-f参数自定义配置文件其定义了多个有依赖关系的服务及每个服务运行的容器。环境安装# cd /opt 直接拖动docker-compose-v2.24文件直接赋权使用 mv docker-compose-v2.24.3 /usr/local/bin/docker-compose chmod x /usr/local/bin/docker-compose #查看版本 docker-compose --versionYMAL文件格式大小写敏感YAML 是大小写敏感的所以一定要注意区分大小写。缩进YAML 使用空格进行缩进不支持 TAB 缩进。通常推荐使用两个空格作为一个层级的缩进。列表列表项使用 - 短横线表示。字典字典使用 : 冒号连接键值对冒号后面需要加一个空格。注释使用 # 来添加注释。字符串如果字符串包含特殊字符可以使用单引号 ’ 或双引号 来包裹。配置常用字段build 指定 Dockerfile 文件名 dockerfile 构建镜像上下文路径 context 可以是 dockerfile 的路径或者是指向 git 仓库的 url 地址 image 指定镜像 command: 执行命令覆盖容器启动后默认执行的命令 container_name 指定容器名称由于容器名称是唯一的如果指定自定义名称则无法scale指定容器数量 deploy 指定部署和运行服务相关配置只能在 Swarm 模式使用 environment 添加环境变量 networks 加入网络引用顶级networks下条目 network_mode 设置容器的网络模式如 hostbridge... ports 暴露容器端口与 -p 相同但端口不能低于 60 volumes 挂载一个宿主机目录或命令卷到容器命名卷要在顶级 volumes 定义卷名称 volumes_from 从另一个服务或容器挂载卷可选参数 :ro 和 :rw仅版本 2 支持 hostname 容器主机名 sysctls 在容器内设置内核参数 links 连接到另外一个容器- 服务名称[:服务别名] privileged 用来给容器root权限注意是不安全的true | false restart 设置重启策略noalwaysnounless-st-failureoped no 默认策略在容器退出时不重启容器。 on-failure 在容器非正常退出时退出状态非0才会重启容器。 on-failure:3在容器非正常退出时重启容器最多重启3次。 always 在容器退出时总是重启容器。 unless-stopped 在容器退出的容器时总是重启容器但是不考虑在 Docker 守护进程启动时就已经停止了。 depends_on 在使用Compose时最大的好处就是少打启动命令但一般项目容器启动的顺序是有要求的如果直接从上到下启动容器可能会因为容器依赖问题而启动失败。例如在没启动数据库容器的时候启动应用容器应用容器 会因为找不到数据库而退出。depends_on标签用于解决容器的依赖、启动先后的问题。 php: depends_on: - apache - mysql常用命令字段 描述 build 重新构建服务 ps 列出容器 up 创建和启动容器 exec 在容器里面执行命令 scale 指定一个服务容器启动数量 top 显示容器进程 logs 查看容器输出 down 删除容器、网络、数据卷和镜像 stop/start/restart 停止/启动/重启服务文件结构/opt/compose_nginx_tomcat/ ├── docker-compose.yml # Docker Compose 配置文件 ├── nginx │ ├── Dockerfile # Nginx 镜像的 Dockerfile │ └── nginx.conf # Nginx 配置文件 ├── tomcat │ ├── Dockerfile # Tomcat 镜像的 Dockerfile │ └── webapps │ └── ROOT.war # Tomcat 应用的 WAR 包 └── wwwroot └── index.html # 静态文件Nginx 显示的页面编写实战准备nginx镜像构建资源和tomcat构建资源。上方成功构建的镜像配置yml文件version: 3 services: nginx: container_name: web1 hostname: nginx build: context: ./nginx dockerfile: Dockerfile ports: - 1218:80 - 1217:443 networks: lnmp: ipv4_address: 172.18.0.10 volumes: - ./wwwroot:/usr/local/nginx/html - ./nginxconf/nginx.conf:/usr/local/nginx/conf/nginx.conf tomcat: container_name: tomcat build: context: ./tomcat ports: - 1808:8080 # 将宿主机的8080端口映射到Tomcat的8080端口 networks: - lnmp networks: lnmp: driver: bridge ipam: config: - subnet: 172.18.0.0/16总结通过合理使用 Dockerfile 和 Docker Compose可以实现一致的开发、测试、生产环境快速部署和扩展资源隔离和优化微服务架构的便捷管理
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

图片分享功能网站开发wordpress 长文章分页

Langchain-Chatchat支持语音输入输出吗?扩展方案介绍 在企业知识管理日益智能化的今天,越来越多组织开始部署本地化的大模型问答系统,以应对数据隐私与合规性挑战。其中,Langchain-Chatchat 凭借其出色的私有文档解析能力和完全离…

张小明 2026/1/9 21:59:51 网站建设

网站模板有什么用遵义做网站

三分钟搞定ADK-Python连接故障:从入门到精通的完整指南 【免费下载链接】adk-python 一款开源、代码优先的Python工具包,用于构建、评估和部署灵活可控的复杂 AI agents 项目地址: https://gitcode.com/GitHub_Trending/ad/adk-python 还在为ADK-…

张小明 2026/1/9 3:03:53 网站建设

楚雄微网站建设成都市温江建设局网站

Qwen3-32B模型幻觉问题实测:当AI开始“优雅地撒谎” 最近在本地部署了通义千问新发布的 Qwen3-32B 模型镜像,第一印象是惊艳的。这个320亿参数规模的“中等身材”选手,在推理、代码生成和长文本理解上的表现,几乎追平部分70B级别的…

张小明 2026/1/12 20:53:11 网站建设

东莞网站推广流程全屋定制都包括什么

Kotaemon中的负载均衡策略如何分配请求? 在企业级智能对话系统日益复杂的今天,一个用户的问题可能触发数十次知识检索、模型推理与工具调用。当成千上万的用户同时发起这类复合请求时,系统的稳定性立刻面临严峻考验——某个节点突然过载、响应…

张小明 2026/1/9 6:18:55 网站建设

广东企业移动网站建设哪家好怎么设计logo图片

FaceFusion镜像支持中文文档与本地化技术支持 在当今全球化的软件生态中,开源项目的本地化支持正逐渐成为影响用户采纳率的关键因素。尤其对于像FaceFusion这样功能强大但技术门槛较高的AI换脸工具而言,语言障碍和技术支持响应速度往往直接决定了其在国内…

张小明 2026/1/12 2:10:47 网站建设

网站建设为大学生服务上行2m可以做网站

Linux基础:TCP/IP服务与系统信息管理 1. 学习Linux的意义与基础铺垫 在网络自动化领域,掌握Linux技能是非常重要的。虽然并非每个学习者都想成为专业的Linux管理员,但具备一定的Linux知识,在复杂生产环境中会有很大的帮助。很多Python网络自动化资源往往忽略了良好Linux管…

张小明 2026/1/12 14:25:31 网站建设