2022 最新版本 Docker 学习_11.Docker 常用镜像部署(tomcat、mysql、nginx等)

一、tomcat

1. 镜像下载:docker pull tomcat;这里我使用的是 lastest 最新版本;

2. 启动镜像:docker run -d tomcat镜像id;这么启动是因为我们要将挂载的文件复制出来,没有必要那么认真写那么多东西,复制完要挂载的文件,就可以把这次启动生成的容器删除。

3. 将要挂载的文件复制到 /home/tomcat 下面:docker cp tomcat容器id:/usr/local/tomcat /home/tomcat;这里我们将整个 tomcat 都给他复制出来,当然你也可以只复制 tomcat 里部分目录或文件。如果你对 tomcat 容器里的构造不是很了解,建议使用 docker exec 命令进去看一眼。

4. 清除容器:docker rm -f 容器id;

5. 挂载目录启动镜像:docker run -id -v /home/tomcat:/usr/local/tomcat -p 8080:8080 --name lemon1234_tomcat 镜像id;-v -p --name 这些要是不认识,建议去看基础。

测试一下挂载情况,我们之前也用过 docker 下面的 tocmat,访问时候会出现 404,我们现在来访问一下。

我们按照之前的方式解决一下,如果不知道怎么做,请看我另外一篇博客:2022 最新版本 Docker 学习_7.Docker 操作命令 - 容器(中)

但是我们不需要再进入到容器里操作,我们直接操作宿主机 /home/tomcat 下面的文件。

完成后,无需重启容器或者服务,直接刷新页面,稍等几秒即可~~~

二、MySQL

1. 镜像下载:docker pull mysql;这里我们还用最新版本,当前 latest 版本是:8.0.29。

 

2. 启动镜像:docker run -d -e MYSQL_ROOT_PASSWORD=123456 mysql镜像id;同理,这么启动原因和 tomcat 一样,但不同的是多了一个 -e 的东西,这个是没有办法的,因为 MySQL 规定启动的时候要给 root 用户一个默认密码,我这里设置的 123456。

3. 将要挂载的文件复制到 /home/mysql 下面:/etc/mysql 是配置文件,/var/log 是日志,/var/lib/mysql 是表、数据等。

docker cp  mysql容器id:/etc/mysql /home/mysql
docker cp  mysql容器id:/var/log /home/mysql
docker cp  mysql容器id:/var/lib/mysql /home/mysql

但是这里建议只将 /etc/mysql 挂载出来即可,另外两个我们一般很少查看或修改。

4. 清除容器:docker rm -f mysql容器id;我这里清除容器之后,把不需要挂载的文件删除了,避免一会我们挂载启动的时候,把没有用的东西也挂载到容器中。

5. 挂载目录启动镜像:docker run -id -p 3306:3306 -v /home/mysql/:/etc/mysql/ -e MYSQL_ROOT_PASSWORD=123456 --name lemon1234_mysql mysql镜像id;

这里测试的话,我们找一个 navicat 或者 dbserver 进行一下连接。

这里经过测试是正常可以使用的。(注意,记得登录之后赶紧修改 root 密码 !!!)

三、Redis

1. 镜像下载:docker pull redis;这里我们还用最新版本,当前 latest 版本是:7.0.0。

 

2. 启动镜像:docker run -d redis镜像id;启动原因同 tomcat。

3. 将要挂载的文件搞到 /home/redis 下面

宿主机下执行以下三个命令:mkdir /home/redis

docker cp ddb11ce54717:/data /home/redis/data

mkdir /home/redis/conf

这里我们得去官网弄个 redis.conf 文件,然后把文件上传到宿主机 /home/redis/conf 里面。

redis.conf 文件下载地址:https://github.com/redis/redis/blob/7.0/redis.conf 这里注意一下,我当前拉取的 redis 镜像版本就是 7.0.0,所以 redis.conf 也是找的 7.0,要版本对应。

这个文件下载好之后不要着急上传,修改几个东西。

把 appendonly 该为 yes;把 requirepass 注释打开,并设置一个密码;bind:127.0.0.1 注释掉;(这个 appendonly 是开启 redis 持久化,不懂得去看我 redis 博客)

完成后上传到对应目录即可。

4. 清除容器:docker rm -f redis容器id;

5. 挂载目录启动镜像:docker run -p 6379:6379 --name lemon1234_redis -v /home/redis/conf/redis.conf:/etc/redis/redis.conf -v /home/redis/data:/data -id redis镜像id redis-server /etc/redis/redis.conf

!!!但是,在我启动镜像之后,容器一直启动不起来,于是乎就去查看了一下日志,发现了这个问题~

这里不要慌,我先给解决方法,去 Redis Github 上找了一个 6.2 版本的 redis.conf 配置重新上传到宿主机,然后启动镜像。

可以看到,启动成功了。

接下来就测试一波,我们通过工具:Another Redis Desktop Manager 连接一波

呵,连接之后才发现,原来 Redis 版本是 6.2.6,并不是 hub.docker 上提供的 7.0.0 !!!上面遇到的 repl-diskless-sync-max-replicas 配置是 Redis 7.0+ 的一个配置项,但是呢,错误日志里面写的又是 Redis 6.2.6,但是我在拉取镜像的时候 TAG 里面明明写的是 7.0,所以我凌乱了~~~,这玩意有没有人管一下

四、Nginx

1. 镜像下载:docker pull nginx;这里我们还用最新版本,当前 latest 版本是:1.21.6。

 

2. 启动镜像:docker run -d nginx镜像id;启动原因同 tomcat。

3. 将要挂载的文件整理到 /home/nginx 下面:/etc/nginx 下面有 nginx 的配置文件等。

docker cp nginx容器id:/etc/nginx /home/nginx

4. 清除容器:docker rm -f nginx容器id;

5. 挂载目录启动镜像:docker run -id --name lemon1234_nginx -v /home/nginx:/etc/nginx -p 80:80 -p 443:443 nginx镜像id

启动好之后,我们直接访问一下 80 端口

可以看到,没有问题~~~


这一讲就讲到这里,有问题可以联系我:QQ 2100363119,欢迎大家访问我的个人网站:https://www.lemon1234.com

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,这是一个比较常见的Docker部署Web项目的需求,下面是一个简单的实现思路: 1. 编写Dockerfile 根据需要编写TomcatMySQLDockerfile,例如: TomcatDockerfile: ```Dockerfile FROM tomcat:9.0.48-jdk8-openjdk COPY ./myapp.war /usr/local/tomcat/webapps/ ``` MySQLDockerfile: ```Dockerfile FROM mysql:5.7 ENV MYSQL_ROOT_PASSWORD=root ENV MYSQL_DATABASE=mydb COPY ./mydb.sql /docker-entrypoint-initdb.d/ ``` 2. 编写docker-compose.yml文件 使用Docker Compose编排工具,将TomcatMySQLNginx服务组合在一起,并实现负载均衡,例如: ```yml version: '3' services: web: build: ./tomcat ports: - "8080:8080" depends_on: - db networks: - my-network db: build: ./mysql ports: - "3306:3306" networks: - my-network nginx: image: nginx:latest ports: - "80:80" volumes: - ./nginx.conf:/etc/nginx/nginx.conf depends_on: - web networks: - my-network networks: my-network: ``` 3. 编写Nginx配置文件 在当前目录下创建一个`nginx.conf`文件,内容如下: ```conf events { worker_connections 1024; } http { upstream myapp { server web:8080; } server { listen 80; server_name localhost; location / { proxy_pass http://myapp; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } } ``` 4. 编写Java代码 编写Java代码,访问MySQL数据库,并将其打包成`myapp.war`文件。 5. 启动服务 在当前目录下执行以下命令: ``` docker-compose up --build ``` 这将会构建Docker镜像并启动服务,其中Nginx会监听80端口,并转发请求到Tomcat服务上,实现负载均衡。 希望以上步骤能够帮到您。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

他 他 = new 他()

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值