Docker 应用部署

2023-10-26


提示:以下是本篇文章正文内容,Docker 系列学习将会持续更新

一、部署 MySQL


①搜索并拉取 mysql 镜像

docker search mysql
docker pull mysql:5.7

②创建容器目录映射

# 在/root/docker-data目录下创建mysql目录
mkdir ~/docker-data/mysql
cd ~/docker-data/mysql

③创建并启动容器,设置端口映射$PWD 表示当前宿主机位置,即 /root/docker-data/mysql

docker run -id \
-p 3307:3306 \
--name=c_mysql \
-v $PWD/conf/my.cnf:/etc/mysql/my.cnf \
-v $PWD/conf/conf.d:/etc/mysql/conf.d \
-v $PWD/logs:/var/log/mysql \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7

自定义 my.cnf 内容如下:

[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000

default-time-zone='+08:00'
innodb_buffer_pool_size = 128M
port = 3306
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
pid-file=/var/run/mysqld/mysqld.pid

# 允许连接失败的次数。
max_connect_errors=10

#引擎
default-storage-engine=INNODB

log-bin = mysql-bin
# #设置保存时间
expire_logs_days=7

# #注意5.7以及更高版本需要配置本项:server-id=123454(自定义,保证唯一性); server-id 一般去ip后三位
server-id=1
# #binlog格式,有3种statement,row,mixed
binlog-format=ROW
# #表示每1次执行写入就与硬盘同步,会影响性能,为0时表示,事务提交时mysql不做刷盘操作,由系统决定
sync-binlog=1

# ##开启慢sql
slow_query_log=on
slow_query_log_file=/var/lib/mysql/slow-query.log
long_query_time=1

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

④进入容器,操作 mysql

docker exec -it c_mysql /bin/bash
mysql -uroot -p123456

⑤使用外部机器连接容器中的 mysql
在这里插入图片描述

回到目录…

二、部署 Tomcat


①搜索并拉取 tomcat 镜像

docker search tomcat
docker pull tomcat:8

②创建容器目录映射

# 在/root/docker-data目录下创建tomcat目录
mkdir ~/docker-data/tomcat
cd ~/docker-data/tomcat

③创建并启动容器,设置端口映射

docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat:8

④使用外部机器访问 tomcat

pwd          # /root/docker-data/tomcat
mkdir test
cd test
touch a.html
vim a.html   # <h1>Hello,I am dockerCloud tomcat<h1>

在这里插入图片描述

回到目录…

三、部署 Nginx


①搜索并拉取 nginx 镜像

docker search nginx
docker pull nginx

②创建容器目录映射

# 在/root/docker-data目录下创建nginx目录用于存储nginx数据信息
mkdir ~/docker-data/nginx
cd ~/docker-data/nginx
mkdir conf
cd conf
# 在conf下创建nginx.conf文件,粘贴下面内容
vim nginx.conf

官方提供的 nginx.conf 配置文件:

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

③创建并启动容器,设置端口映射

docker run -id --name=c_nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/conf.d/default.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx

④使用外部机器访问 nginx

a. 此时 nginx 的 html 目录为空,也没有做任何代理。
在这里插入图片描述

b. 调用自己 html 目录下的 index.html 文件
在这里插入图片描述

c. 用 nginx 做反向代理

 如果 nginx 代理宿主机的应用,则参考:Linux 安装 nginx 详细教程 nginx 做反向代理。

 如果 nginx 想代理其它容器中的应用,则参考:Docker Compose 构建多容器应用 编排 Nginx + Springboot 项目。

回到目录…

四、部署 Redis


①搜索并拉取 redis 镜像

docker search redis
docker pull redis:4.0

②创建容器目录映射

mkdir ~/docker-data/redis
cd ~/docker-data/redis

③创建并启动容器,设置端口映射

可以不挂载数据卷,直接启动:

docker run -id --name=c_redis -p 6379:6379 redis:4.0

挂载数据卷:

docker run -id --name=c_redis \
-p 6379:6379 \
-v /$PWD/conf/redis.conf:/etc/redis.conf \
-v /$PWD/data:/data \
redis:4.0

启动前,先在宿主机中添加 /redis/conf/redis.conf 自定义配置文件:

bind 0.0.0.0
port 6379
daemonize yes
logfile "6379.log"
dir /data
databases 16

# rdb 相关配置
dbfilename dump-6379.rdb
# rdb保存时压缩数据
rdbcompression yes
# rdb文件格式校验
rdbchecksum yes
stop-writes-on-bgsave-error yes
save 10 2

# aof 相关配置
appendonly yes
appendfsync always
appendfilename appendonly-6379.aof

④使用外部机器连接 redis

redis-cli.exe -h 1.15.76.95 -p 6379

回到目录…


总结:
提示:这里对文章进行总结:
本文是对Docker的学习,学会了如何在 Docker 中进行应用部署,并且将我们常用的开发工具如mysql、tomcat、nginx、redis进行了部署,还给它们配置了数据卷。之后的学习内容将持续更新!!!

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

Docker 应用部署 的相关文章

  • 如何处理 pcntl_fork(): 错误 35?

    我有 php7 CLI 守护进程 它连续解析文件大小超过 50M 的 json 我试图使用 pcntl fork 的单独进程将每 1000 个解析数据条目保存到 mysql 对于约 200k 行 它工作得很好 然后我得到pcntl fork
  • 通过selenium在firefox中打开私有模式

    实际上我想通过selenium打开firefox浏览器的隐身 私密模式 但每次我尝试时都是以正常模式打开firefox 经过一番谷歌搜索后 我得到了这段代码 我用它通过 selenium 在 Firefox 中打开私有模式 但它不起作用 F
  • 我应该使用 Facelets“jsfc”属性吗?

    Facelets 使用jsfc属性将 HTML 元素转换为其关联的JSF成分 这对于快速原型设计非常有帮助 因为它允许您使用可视化设计工具创建视图 然而我最近发现this http weblogs java net blog 2008 12
  • 如何计算Java数组的内存大小?

    我知道如何通过添加三个部分来计算Java对象的内存大小 标头 属性 引用 我还知道Java数组也是一个对象 但是当我读到 Understanding the JVM Advanced Features and Best Practices
  • 如何创建具有两个主键和两个外键的表?

    create table Machine Machine ID int primary key Machine Name varchar 30 Machine Title varchar 30 create table Part Part
  • 单击 libGDX 中的 Actor

    我的游戏中有一个覆盖层 其中包含屏幕图像和屏幕 上 的一组按钮 截屏 My Screen有一个Stage The Stage有一组Group对象 我将其视为图层 第一组具有背景 中间的组具有游戏元素 最前面的组具有屏幕覆盖 覆盖层由一个Im
  • Clojure/Java:用于声音频谱分析的 Java 库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以接受大量音频数据并返回给定频带内随时间变化的平均幅度的库 我已经在 comp dsp
  • 在 MySQL 中存储 IPv6 地址

    正如 需要支持 ipv6 的 inet aton 和 inet ntoa 函数 http bugs mysql com bug php id 34037 目前没有用于存储 IPv6 地址的 MySQL 函数 用于存储 插入的推荐数据类型 函
  • 在Java程序中打开Windows虚拟键盘

    我想在按钮中创建一个事件 当我单击按钮时 我想打开 Windows 虚拟键盘 你能帮我看一下代码吗 谢谢您的合作 此致 您可以使用 getRuntime 来执行它 import java io IOException public clas
  • Laravel updateOrCreate 带有自动增量数据库

    我的目的是如果值存在则更新 否则插入新行提交表单后在数据库表中 问题是 这里的函数添加新列在数据库表中而不是更新它们 这是我的功能 MyModel updateOrCreate array myField gt myValue gt whe
  • mysql 部分索引、反向索引

    我有一张包含单词列表的表格 字 VARCHAR 16 我需要创建一个反向索引 IE 单词 apple 将索引为 elppa 单词 banana 将索引为 ananab 依此类推 另外 是否可以索引单词的一部分 例如 跳过第一个 最后一个或
  • 为什么枚举可以有包私有构造函数?

    既然枚举构造函数只能由其常量调用 为什么允许它是包私有的呢 构造函数实际上不是包私有的 它是隐式的private接口方法的隐式方式public即使您不添加关键字 JLS 的相关部分 8 8 3 http docs oracle com ja
  • 如何强制 JTable 在包含阿拉伯字符的情况下不反转文本?

    我有以下文字 word 但是当它显示在我的 JTable 上时 它看起来像这样 word 在每个 JLabel 或 TextArea 或任何其他输入中 它确实看起来像原始文本 word 仅在 JTable 上我遇到这样的问题 我不在乎它是否
  • 将容器推送到 Azure 容器注册表时资源访问被拒绝

    使用 Docker Compose 将容器推送到私有 Azure 容器注册表时 Azure DevOps 管道返回以下错误 正在推送 容器 注册表 应用程序 最新 推送引用存储库 docker io registry container 被
  • 为什么Mysql在连接另一个表B时对表A使用全表扫描?

    我有一个表 A 和一个表 B 我正在从表 A 中选择信息 其中我只需要表 A 中的信息 其中表 B 联接表 A 我在联合列和 WHERE 子句上有索引 这是选择代码 SELECT FROM tableA INNER JOIN tableB
  • 事务 TransactionImple ActionStatus.ABORTED 已回滚

    我实现了DTO业务从TomEE到JBoss的迁移 我有这个实体 NamedQueries NamedQuery name common plagebusiness plage getAllPlages query SELECT p FROM
  • 如何获取MySQL中最后更新的行的ID?

    如何使用 PHP 获取 MySQL 中最后更新行的 ID 我找到了这个问题的答案 SET update id 0 UPDATE some table SET column name value id SELECT update id id
  • 通过JVMTI识别异常

    我正在使用 JVMTI 为 Java 应用程序编写一个检测工具 我已经看到 JVMTI 检测何时抛出异常以及何时捕获异常http docs oracle com javase 7 docs platform jvmti jvmti html
  • Spring Data JPA 中使用 @Query 进行动态查询?

    我在 Spring Boot 应用程序中使用规范 可以通过不同的过滤器选项过滤结果 但是 我需要使用特殊的过滤器 Query在我的存储库方法中 据我所知 我无法在此查询中构建动态 WHERE 子句 还有 QueryDSL 和 Criteri
  • 使用 mysql_real_escape_string() 时出现访问被拒绝错误

    我试图在数据进入我的数据库之前转义一些数据 但我不断收到此错误 Warning mysql real escape string Access denied for user 现在 这通常表明我尚未连接到数据库 它还声明 使用密码 NO 我

随机推荐

  • 最小二乘法

    首先给出公式 最小二乘法的公式 y a x b 其中式中N是数据点的个数 注意 以上两式具有相同的分母 指逐项加法计算 取和 x指对所有的x值求和 y指对所以的y值求和 x 2 指对所有x的平方求和 xy指对所有的积xy进行取和计算 应注意
  • java-es查询

    目录 1 检索ES数据库 2 检索下级数据 3 1 检索多个字段 匹配同一个值 3 2 must 3 3 should 3 3 1 should 一个key多个value 4 java中匹配ES中多个字段查询 为什么加上 keyword反而
  • iis多进程下的全局变量_全局变量初始化顺序探究

    缘起 上一篇文章 调试实战 dll 加载失败之全局变量初始化篇 中 跟大家分享了一个由于全局变量初始化顺序导致的 dll 加载失败的例子 感兴趣的小伙伴儿可以点击阅读 虽然我们知道了是由于全局变量初始化顺序导致的问题 也给出了解决方案 但是
  • 【HarmonyOS】【FAQ】HarmonyOS应用开发相关问题解答(四)

    贴接上回 往期FAQ参考 HarmonyOS FAQ HarmonyOS应用开发相关问题解答 一 HarmonyOS FAQ HarmonyOS应用开发相关问题解答 二 HarmonyOS FAQ HarmonyOS应用开发相关问题解答 三
  • 穷举法解锁华为手机bootloader

    理论 理论一次解锁0 025s 穷举要9999999999999999 0 025 60 60 24 365 190258751年 建议大家还是用dc unlocker解锁 shell 脚本 运气好的可以试试 bin bash gt unl
  • 10_react页面跳转方式

    一 声明式导航 react router 6 之前 match
  • 【PCIe】1: PCIe 硬件时序初始化过程

    目录 1 前言 2 PCIe理论带宽 3 PCIe连接器引脚定义 4 关键信号描述 4 1 PERST 4 2 REFCLK 和REFCLK 信号
  • Java运行时动态加载类之ClassLoader加载class及其依赖jar包

    需求场景是 通过ClassLoader动态加载外部class文件 class文件又依赖某个具体jar包 需要动态加载jar包 采用URLClassLoader 1 xml配置文件
  • 封装v-loading全局自定义指令

    当我们刷新页面或者是首次加载的时候 如果后端数据请求比较慢的情况下 页面是会出现白屏情况的 所以我们可以使用 v loading 去优化一下 增加用户的体验性 我们可以有两种方式去实现 1 定义一个 loading 的组件 然后在每一个需要
  • Python---自动生成二维码

    专栏 python 个人主页 HaiFan 专栏简介 本专栏主要更新一些python的基础知识 也会实现一些小游戏和通讯录 学时管理系统之类的 有兴趣的朋友可以关注一下 自动生成二维码 二维码的本质上 就是一段字符串 我们可以把任意的字符串
  • 一位大三学生(准大四)面试网络工程师后的一些想法

    首先声明 这是我面试一家公司的网络工程师后想要表达的一些东西 早就面试完了 但是一直现在才发 以上均为个人想法 本科大学就不说名字了吧 非211 985 是省重点建设高校 省内知名 省外无名 本人专业通信 但是对这个专业无感 所以投身于了网
  • 成为一名黑客(网络安全),需要掌握哪些黑客技能?

    前言 黑客技能是一项非常复杂和专业的技能 需要广泛的计算机知识和网络安全知识 你可以参考下面一些学习步骤 系统自学网络安全 在学习之前 要给自己定一个目标或者思考一下要达到一个什么样的水平 是学完找工作 进大厂 还是兴趣学习提升 成为一个黑
  • Etcd恢复报错:error listing data dir: /var/lib/etcd/default.etcd

    通过systemd托管的etcd数据备份还原无法启动服务并且报错 error listing data dir var lib etcd default etcd 但是单独执行启动命令可以 usr bin etcd debug name d
  • 各种数据结构的时间复杂度分析

    对于同一个数据结构来说 底层实现的不同往往会呈现出不同的时间复杂度 以数组为例 普通数组实现 顺序数组实现 二分搜索树 平衡 插入 O 1 O n O logn 查找 O n O logn O logn 删除 O n O n O logn
  • 青龙面板及使用(拔毛助长)

    提示 码文不易 来源 学习日常 前言 简单说一下这个原理吧 就是把写好的脚本挂在面板上 让他定时运行 得有个服务器 我用的是腾讯的 搭建的问题 直接搜吧 我就不在过多说些什么了 最好有俩种设备 安卓 苹果 知识储备的话 懂点python j
  • c语言中空格算空行吗,1、程序中空格与空行使用规范

    在程序代码中 善用空格与空行 可使程序板式更加优美 空格 使用 1 在C语言的关键字 像if for while switch等 之后要留有空格 以突显出该关键字 在函数之后不要留空格 紧跟左括号 以与关键字作区别 但在函数定义的参数之间
  • NAT技术详解

    前言 我们知道现在流行的IPv4的IP地址是32位的 那说明IP地址总数是2 32次方个 但是随着互联网的发展 现在的入网设备早就超过了2 32次方个了 拿为什么我们现在的主机IP还够用呢 这里用到了NAT技术来解决 一 NAT技术概念 在
  • 如何阅读他人的程序代码(上)——技巧学习篇

    一 读懂程序代码 使心法皆为我所用 程序代码是别人写的 只有原作者才真的了解程序代码的用途及涵义 许多程序人心里都有一种不自觉的恐惧感 深怕被迫去碰触其他人所写的程序代码 但是 与其抗拒接收别人的程序代码 不如彻底了解相关的语言和惯例 当成
  • java中如何进行日期时间比较?4种方法介绍

    1 Date compareto java util Date提供了在Java中比较两个日期的经典方法compareto 1 如果两个日期相等 则返回值为0 2 如果Date在date参数之后 则返回值大于0 3 如果Date在date参数
  • Docker 应用部署

    文章目录 一 部署 MySQL 二 部署 Tomcat 三 部署 Nginx 四 部署 Redis 提示 以下是本篇文章正文内容 Docker 系列学习将会持续更新 一 部署 MySQL 搜索并拉取 mysql 镜像 docker sear