DockerFile集成mysql,nginx,zookeeper,redis,tomcat为一个镜像

2023-05-16

将mysql、nginx、zookeeper、redis、tomcat集成为一个docker镜像
实现运行一个镜像,便全部自动化安装启动mysql、nginx、zookeeper、redis、tomcat。

1.在CentOS7上安装Docker
2.复制拷贝相关压缩包到同一个目录
3.拉取centos镜像
4.在压缩包目录下编写Dockerfile

FROM centos:centos7
MAINTAINER wxd "894569924@qq.com"
# 1.准备工作创建文件夹
    RUN \
    mkdir -p /usr/local \
    && mkdir -p /etc/redis \
    && mkdir /opt/logs \
    && mkdir -p /data/mysql \
    && mkdir -p /data/nginx/conf \
    && mkdir -p /data/nginx/html
# 复制文件
COPY jdk-8u181-linux-x64.tar.gz /usr/local
COPY redis-3.2.8.tar.gz /usr/local
COPY apache-tomcat-8.5.34.tar.gz /usr/local
COPY zookeeper-3.4.12.tar.gz /usr/local
COPY zoo.cfg /usr/local
COPY redis.conf /etc/redis/redis.conf
COPY supervisord.conf /etc/supervisord.conf
COPY program.conf /etc/program.conf
# 复制数据库文件
COPY libaio-0.3.109-13.el7.x86_64.rpm /usr/local
COPY MySQL-client-5.6.29-1.rhel5.x86_64.rpm /usr/local
COPY MySQL-devel-5.6.29-1.rhel5.x86_64.rpm /usr/local
COPY MySQL-server-5.6.29-1.rhel5.x86_64.rpm /usr/local
# 复制nginx安装文件
COPY nginx-1.15.5.tar.gz /usr/local
#COPY nginx.conf /usr/local/
#COPY ckkxy.kz38.cn_20180615.tar.gz /usr/local
#安装vim编辑器
RUN yum -y install vim
# 安装 sshd 修改密码
RUN \
    yum install passwd openssl openssh-server -y \
    && ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N '' \
    && ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' \
    && sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config \
    && echo 123456 | passwd --stdin root \
    && echo root:123456|chpasswd \
    && rm -rf /var/cache/yum/*
# 安装redis
RUN \
    yum install gcc -y \
    && cd /usr/local \
    && tar -xzf redis-3.2.8.tar.gz \
    && rm -rf redis-3.2.8.tar.gz \
    && cd redis-3.2.8 && yum -y install tcl && make && make install \
    && cd /usr/local \
   # && rm -rf redis-3.2.8 \
    && rm -rf /var/cache/yum/*
# 安装mysql
RUN \
    yum -y install perl perl-devel perl-Module-Install.noarch net-tools \
    && cd /usr/local \
    && rpm -ivh libaio-0.3.109-13.el7.x86_64.rpm \
    && rpm -ivh MySQL-server-5.6.29-1.rhel5.x86_64.rpm \
    && rpm -ivh MySQL-client-5.6.29-1.rhel5.x86_64.rpm \
    && rpm -ivh MySQL-devel-5.6.29-1.rhel5.x86_64.rpm \
    && chown -R mysql:mysql /data/mysql \
    && /etc/init.d/mysql start \
    && mysqltmppwd=`cat /root/.mysql_secret | cut -b 87-102` \
    && mysqladmin -u root -p${mysqltmppwd} password "admin123!@#QWE" \
    && mysql -uroot -padmin123!@#QWE -e"flush privileges" \
    && /etc/init.d/mysql stop \
    && rm -rf libaio-0.3.109-13.el7.x86_64.rpm \
    && rm -rf MySQL-client-5.6.29-1.rhel5.x86_64.rpm \
    && rm -rf MySQL-devel-5.6.29-1.rhel5.x86_64.rpm \
    && rm -rf MySQL-server-5.6.29-1.rhel5.x86_64.rpm \
    && rm -rf /var/cache/yum/* \
    && sed -i -e "10a datadir = /data/mysql" /usr/my.cnf
# 安装 nginx
RUN \
    yum -y install gcc-c++ zlib zlib-devel openssl openssl--devel pcre pcre-devel \
    && cd /usr/local \
    && tar -zxv -f nginx-1.15.5.tar.gz \
    && rm -rf nginx-1.15.5.tar.gz \
    && cd nginx-1.15.5 \
    && ./configure --with-http_stub_status_module \
    && make && make install \
    && cd .. \
    && rm -rf nginx-1.15.5 \
 #   && cp ckkxy.kz38.cn_20180615.tar.gz /usr/local/nginx/html \
 #   && cd /usr/local/nginx/html \
 #   && tar -zxvf ckkxy.kz38.cn_20180615.tar.gz \
 #   && rm -rf ckkxy.kz38.cn_20180615.tar.gz \
 #   && cp -rf /usr/local/nginx.conf /usr/local/nginx/conf \
 #   && cd /usr/local \
 #   && rm -rf nginx.conf \
    && rm -rf /var/cache/yum/*
#   && echo "daemon off" >> /usr/local/nginx/conf/nginx.conf
#安装zokeeper
    && tar -zxvf zookeeper-3.4.12.tar.gz \
    && mv zookeeper-3.4.12 zookeeper \
    && rm -rf zookeeper-3.4.12.tar.gz \
    && cp zoo.cfg /usr/local/zookeeper/conf \
RUN \
    yum -y install python-setuptools \
    && easy_install supervisor \
    && rm -rdf /var/cache/yum/*
#设置工作访问时候的WORKDIR路径,登陆落脚点
ENV MYPATH /usr/local
WORKDIR $MYPATH
# 配置java与tomcat环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_181
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.34
ENV CATALINA_BASE /usr/local/apache-tomcat-8.5.34
ENV ZOOKEEPER_INSTALL=/usr/local/zookeeper
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin:ZOOKEEPER_INSTALL/bin

EXPOSE 22 80 3306 6379 8080 2181
#ENTRYPOINT /usr/local/apache-tomcat-8.5.34/bin/startup.sh && tail -F /usr/local/apache-tomcat-8.5.34/bin/logs/catalina.out
CMD /usr/bin/supervisord -c /etc/supervisord.conf && /usr/local/zookeeper-3.4.12/bin/zkServer.sh
#CMD /usr/sbin/init

5.构建镜像
6.运行容器

docker run --name web -d -p 12352:22 -d -p 80:80 -d -p 3306:3306 -d -p 12565:6379 -d -p 8080:8080 -d -p 13252:2181 -v /data/mysql:/data/mysql app:web

7.将在宿主机将data/nginx/conf目录下nginx.conf文件配置好。并且将项目文件放在/data/nginx/html目录下
8.数据库恢复数据需要进入运行起来的容器里,然后使用mysql -uroot -p登陆数据库

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DockerFile集成mysql,nginx,zookeeper,redis,tomcat为一个镜像 的相关文章

  • 从另一台计算机访问 MYSQL

    我想开发一个java桌面应用程序 我想在其中设置服务器 这意味着我在这里使用mysql db 该数据库将仅存储在一台电脑上 其余所有用户都可以访问该数据库 所以 我听说了mysql远程连接 其中尝试了一些事情 这些措施如下 我的电脑已连接w
  • 如何在 MySQL 中求和时间?

    正如您在图片中看到的 我有一份停机报告 显示了所选工厂在选定日期的停机时间 现在我想添加所有的值 Time Duration 列并将其显示在附近的单独显示中 TOTAL TIME DURATION 例如 在图像中 所选日期为 2015 年
  • MySQL 和 Hibernate 之间的主键自增由谁负责?

    MySQL CREATE TABLE role id role INT 11 unsigned NOT NULL AUTO INCREMENT PRIMARY KEY id role AUTO INCREMENT 1 休眠 Entity p
  • 为什么我需要 Nginx 和 Puma?

    我正在将 Rails 应用程序部署到生产环境中 看起来 Puma 速度很快 可以处理我想要在网络服务器中完成的许多事情 我想知道我是否需要使用 Nginx 如果只使用 Puma 我会错过什么 Nginx 是一个 Web 服务器 puma 是
  • mysql转储到derby

    我正在使用 derby 在 eclipse 中进行开发 是否可以从 MySQL 转储表并以某种方式将其用于 derby 我知道 ddl 和 dml 对于两个 dbms 来说是不同的 但我正在寻找一种除了转储 导出之外的合适方法 我可以找到两
  • PHP MYSQL文件内容转义问题

    我正在尝试使用 php 将 pdf 文件上传到 mysql 数据库中 除了文件内容之外 一切都很好 无论我如何尝试转义特殊字符 查询总是失败 主要是 未知命令 n 我使用过addslashes mysql real escape strin
  • SQL Join 列上类似于另一列[重复]

    这个问题在这里已经有答案了 可能的重复 mysql连接查询使用like https stackoverflow com questions 1930809 mysql join query using like 我想要进行连接 其中一列包含
  • Bash 实例未嵌套在 Dockerfile `RUN` 中

    嵌套 bash 实例会递增 SLVL 环境变量 http tldp org LDP abs html internalvariables html http tldp org LDP abs html internalvariables h
  • 如何暂停或恢复 celery 任务?

    我的项目中有一项要求 客户可以暂停或恢复正在挂起的流程 而不是流程流程 我在用网络套接字显示芹菜任务结果 但在暂停 恢复时我不明白如何设计代码 我想到的唯一方法就是revoke暂停请求中的任务 同时保留数据撤销的过程在缓存中 并稍后在res
  • PHP 和 MySQL - 高效处理多个一对多关系

    我正在寻求一些有关使用 MySQL 和 PHP 检索和显示数据的最佳方法的建议 我有 3 个表 所有一对多关系如下 Each SCHEDULE有很多覆盖每个覆盖都有很多地点 我想检索这些数据 以便它可以全部显示在单个 PHP 页面上 例如列
  • MySQL 错误 1172 - 结果包含多行

    在存储过程中运行查询时 我从 MySQL 收到此错误 错误代码 1172 结果包含多行 我理解错误 我正在做一个SELECT INTO var list 因此查询需要返回单行 当我使用LIMIT 1 or SELECT DISTINCT 错
  • MySQL 排序顺序 - 排序规则?

    我在对 MySQL 中的 char 字段进行排序时遇到困难 问题是重音字符与非重音字符混淆 例如 Abc bd Acc 我认为这可能与整理有关 所以我将表格的排序规则更改为utf8 ut8 bin 看完之后这个帖子 https stacko
  • 如何在 MySQL 中测试 Select for Update

    我正在表演SELECT FOR UPDATE或 InnoDB 表的行级锁定 我的目的是只有一个请求可以读取同一行 因此 如果两个用户同时请求相同的数据 其中只有一个人获取数据 即第一个触发查询的人 但是我如何测试锁定是否已放置 因为我正在通
  • 无法从 rollupOptions 自动确定入口点

    我正在尝试对使用 vite 和 vue3 创建的前端应用程序进行 dockerize 它不作为容器工作 这是错误响应 无法从 rollupOptions 或 html 文件自动确定入口点 并且没有显式的 OptimizeDeps inclu
  • ORDER BY 字段内的 MySQL 子查询。 (没有内连接)

    有很多与此相关的问题 但都具有使用内部联接的相同答案 这 我认为 在这里是不可能的 如果我错了请告诉我 我现在正在做的是调用两个不同的 mysql 查询来获取结果 它工作完美 db gt query SELECT FROM meta WHE
  • 将庞大数据库从亚马逊RDS导出到本地mysql

    我在 Amazon RDS 上有一个 mysql 数据库 大约 600GB 数据 我需要将其移回本地专用服务器 但我不知道从哪里开始 每次我尝试初始化 sqldump 时它都会冻结 有没有办法将其移至 S3 甚至可能在开始下载之前将其分成更
  • 如果 Redis 已经是堆栈的一部分,为什么 Memcached 仍然与 Redis 一起使用?

    Redis 可以执行 Memcached 提供的所有操作 LRU 缓存 项目过期以及现在版本 3 x 中的集群 目前处于测试阶段 或通过 twemproxy 等工具执行 性能也类似 此外 Redis 增加了持久性 因此您无需在服务器重新启动
  • PHP 与 MySQL 查询性能( if 、 函数 )

    我只看到这个artice http www onextrapixel com 2010 06 23 mysql has functions part 5 php vs mysql performance 我需要知道在这种情况下什么是最好的表
  • 有没有好的方法支持 Redis 排序集中的 pop 成员?

    有没有好的方法可以像 List 的 api LPOP 一样支持 Redis 排序集中的 pop 成员 我发现从 Redis 排序集中弹出消息是使用 ZRANGE ZREM 但是它不是线程安全性 并且当多个线程从不同主机同时访问它们时需要分布
  • 快速将列的副本添加到 MySQL 表

    我需要一种快速的方法来复制表中的 DATETIME 列并为其指定一个新名称 我的表中有一个名为 myDate 的列 名为 myResults 我需要一个查询来在名为 newDate 的表中创建一个新列 该列的数据与 myDate 列完全相同

随机推荐