docker-compose容器及Dockerfile的使用

news2024/11/15 17:48:40

软件资源:
链接: https://pan.baidu.com/s/1iYMP7p7v_HUMc9vakIQfbQ?pwd=6fes 提取码: 6fes

docker-compose容器

部署nmt---nginx+compose+tomcat项目

使用基础的docker指令来创建镜像,实现项目的发布。

Dockerfile--->docker-compose

背景:在一台主机内实现容器的编排,发布考试系统

前端部署

1.安装docker

[root@docker0 ~]# sh docker.sh

2.编辑daemon.json文件---设置仓库镜像

vim /etc/docker/daemon.json

{

 "registry-mirrors":[

 "https://do.nark.eu.org",

       "https://dc.j8.work",

       "GitHub - DaoCloud/public-image-mirror: 很多镜像都在国外。比如 gcr 。国内下载很慢,需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。",

       "https://dockerproxy.com",

       "https://docker.mirrors.ustc.edu.cn",

       "https://docker.nju.edu.cn"

 ]

}

3.开启docker服务

[root@docker0 ~]# systemctl daemon-reload

[root@docker0 ~]# systemctl start docker

4.拉取nginx镜像

[root@docker0 ~]# docker pull nginx

Using default tag: latest

latest: Pulling from library/nginx

e4fff0779e6d: Pull complete

2a0cb278fd9f: Pull complete

7045d6c32ae2: Pull complete

03de31afb035: Pull complete

0f17be8dcff2: Pull complete

14b7e5e8f394: Pull complete

23fa5a7b99a6: Pull complete

Digest: sha256:447a8665cc1dab95b1ca778e162215839ccbb9189104c79d7ec3a81e14577add

Status: Downloaded newer image for nginx:latest

docker.io/library/nginx:latest

查看镜像

[root@docker0 ~]# docker images

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE

nginx        latest    5ef79149e0ec   2 weeks ago   188MB

5.创建nginx容器

[root@docker0 ~]# docker run -itd -p80:80 nginx:latest

c9fa7a0cbb13a3dd627b94c28f76ce1802fa391652832ad875782c8d073e6ff9

[root@docker0 ~]# docker ps

CONTAINER ID   IMAGE          COMMAND                   CREATED          STATUS          PORTS                               NAMES

c9fa7a0cbb13   nginx:latest   "/docker-entrypoint.…"   17 seconds ago   Up 15 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   affectionate_vaughan

[root@docker0 ~]# curl localhost

<!DOCTYPE html>

<html>

<head>

<title>Welcome to nginx!</title>

<style>

html { color-scheme: light dark; }

body { width: 35em; margin: 0 auto;

font-family: Tahoma, Verdana, Arial, sans-serif; }

</style>

</head>

<body>

<h1>Welcome to nginx!</h1>

<p>If you see this page, the nginx web server is successfully installed and

working. Further configuration is required.</p>

<p>For online documentation and support please refer to

<a href="http://nginx.org/">nginx.org</a>.<br/>

Commercial support is available at

<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>

</body>

</html>

在容器启动之后,nginx服务酒店发布了

6.

[root@docker0 ~]# docker exec -it c9fa ls /usr/share/nginx/html

50x.html  index.htm

7.创建一个目录,将前端和后端的所以资料放在这里

[root@docker0 ~]# mkdir project_exam_system/

[root@docker0 ~]# cd project_exam_system/

[root@docker0 project_exam_system]# mkdir web

[root@docker0 project_exam_system]# rz -E

rz waiting to receive.

[root@docker0 project_exam_system]# ls web/

dist

[root@docker0 project_exam_system]# ls web/dist/

assets  favicon.ico  index.html

8.创建容器,映射端口,挂载目录

删除容器c9fa

[root@docker0 project_exam_system]# docker stop c9fa

c9fa

[root@docker0 project_exam_system]# docker rm c9fa

c9fa

创建新容器

[root@docker0 project_exam_system]# docker run -itd -p80:80 -v /root/project_exam_system/web/dist/:/usr/share/nginx/html/ nginx:latest

b46e530213e011ca30c84549aabc42db21cef193ef8d426ed1c2a6f5fe818d44

9.刷新浏览器

后端部署

1.拉取centos镜像

[root@docker0 project_exam_system]# docker pull centos

Using default tag: latest

latest: Pulling from library/centos

a1d0c7532777: Pull complete

Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177

Status: Downloaded newer image for centos:latest

docker.io/library/centos:latest

[root@docker0 project_exam_system]# docker images

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE

nginx        latest    5ef79149e0ec   2 weeks ago   188MB

centos       latest    5d0da3dc9764   2 years ago   231MB

2.创建容器启动镜像

[root@docker0 project_exam_system]# docker run -it centos:latest /bin/bash

[root@73e60487e331 /]# ls

bin  etc   lib          lost+found  mnt  proc  run   srv  tmp  var

dev  home  lib64  media       opt  root  sbin  sys  usr

[root@73e60487e331 /]# [root@docker0 project_exam_system]#

3.jdk17的版本、项目资源war

[root@docker0 ~]# ls

anaconda-ks.cfg         jdk-17_linux-x64_bin.tar.gz

application.properties  project_exam_system

docker.sh               Project_ExamSystem-V1.0.0.war

initserver.sh

4.将外部资源复制到容器内

[root@docker0 ~]# docker cp --help

Usage:  docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-

docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

Copy files/folders between a container and the local filesystem

Use '-' as the source to read a tar archive from stdin

and extract it to a directory destination in a container.

Use '-' as the destination to stream a tar archive of a

container source to stdout.

Aliases:

  docker container cp, docker cp

Options:

  -a, --archive       Archive mode (copy all uid/gid information)

  -L, --follow-link   Always follow symbol link in SRC_PATH

  -q, --quiet         Suppress progress output during copy.

                      Progress output is automatically suppressed

                      if no terminal is attached

[root@docker0 ~]# docker ps

CONTAINER ID   IMAGE           COMMAND                   CREATED          STATUS          PORTS                               NAMES

73e60487e331   centos:latest   "/bin/bash"               2 minutes ago    Up 2 minutes                                        elastic_robinson

b46e530213e0   nginx:latest    "/docker-entrypoint.…"   33 minutes ago   Up 33 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   sleepy_vaughan

[root@docker0 ~]# docker cp jdk-17_linux-x64_bin.tar.gz 73e6:/

Successfully copied 183MB to 73e6:/

[root@docker0 ~]# docker cp application.properties 73e6:/

Successfully copied 4.1kB to 73e6:/

[root@docker0 ~]# docker cp Project_ExamSystem-V1.0.0.war 73e6:/

Successfully copied 41MB to 73e6:/

5.连接centos镜像的容器

对已传到容器的文件进行部署

[root@docker0 ~]# docker attach 73e6

[root@73e60487e331 /]# ls

Project_ExamSystem-V1.0.0.war  jdk-17_linux-x64_bin.tar.gz  opt   sys

application.properties               lib                            proc  tmp

bin                               lib64                            root  usr

dev                               lost+found                    run   var

etc                               media                            sbin

home                               mnt                            srv

6.创建解压目录

[root@73e60487e331 /]# mkdir /usr/local/jdk

7.解压jdk17到指定目录

[root@73e60487e331 /]# tar -zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/local/jdk/ --strip-components=1

[root@73e60487e331 /]# ls /usr/local/jdk/

LICENSE  README  bin  conf  include  jmods  legal  lib        man  release

8.修改application.properties

设置了java程序连接数据库的操作

[root@73e60487e331 /]# vi application.properties

9.启动java

[root@73e60487e331 /]# /usr/local/jdk/bin/java -jar Project_ExamSystem-V1.0.0.war

10.访问服务

Ctrl+p+q退出访问,出现以下情况表示正常启动,但是没有给数据和账号。

[root@docker0 ~]# curl 172.17.0.3:8080

{"code":20002,"msg":"账号不存在或密码错误"}[root@docker0 ~]#

[root@docker0 ~]# docker commit b885 java:v0

sha256:c4a7ac6df09c0e5ed30399b145f53a8dcbda6cc32690a84c06527f6e619e6885

[root@docker0 ~]# docker images

REPOSITORY   TAG       IMAGE ID       CREATED          SIZE

java         v0        c4a7ac6df09c   22 seconds ago   774MB

nginx        latest    5ef79149e0ec   2 weeks ago      188MB

centos       latest    5d0da3dc9764   2 years ago      231MB

[root@docker0 ~]# docker commit b885 java:v0

sha256:c4a7ac6df09c0e5ed30399b145f53a8dcbda6cc32690a84c06527f6e619e6885

[root@docker0 ~]# docker images

REPOSITORY   TAG       IMAGE ID       CREATED          SIZE

java         v0        c4a7ac6df09c   22 seconds ago   774MB

nginx        latest    5ef79149e0ec   2 weeks ago      188MB

centos       latest    5d0da3dc9764   2 years ago      231MB

[root@docker0 ~]# docker ps

CONTAINER ID   IMAGE           COMMAND                   CREATED             STATUS             PORTS                               NAMES

b8854febcad4   centos:latest   "/bin/bash"               8 minutes ago       Up 8 minutes                                           inspiring_kare

b46e530213e0   nginx:latest    "/docker-entrypoint.…"   About an hour ago   Up About an hour   0.0.0.0:80->80/tcp, :::80->80/tcp   sleepy_vaughan

[root@docker0 ~]# docker stop b885

b885

[root@docker0 ~]# docker rm b885

b885

[root@docker0 ~]# docker run -itd -p8080:8080 java:v0 /usr/local/jdk/bin/java -jar Project_ExamSystem-V1.0.0.war

7daf96b493fec05e23262a04003b70ea818ef6abfbdaa753e1bce911b4ad9b73

数据持久化

1.拉取MySQL镜像

[root@docker0 ~]# docker pull mysql:5.7.44

5.7.44: Pulling from library/mysql

20e4dcae4c69: Pull complete

1c56c3d4ce74: Pull complete

e9f03a1c24ce: Pull complete

68c3898c2015: Pull complete

6b95a940e7b6: Pull complete

90986bb8de6e: Pull complete

ae71319cb779: Pull complete

ffc89e9dfd88: Pull complete

43d05e938198: Pull complete

064b2d298fba: Pull complete

df9a4d85569b: Pull complete

Digest: sha256:4bc6bc963e6d8443453676cae56536f4b8156d78bae03c0145cbe47c2aad73bb

Status: Downloaded newer image for mysql:5.7.44

docker.io/library/mysql:5.7.44

[root@docker0 ~]# docker images

REPOSITORY   TAG       IMAGE ID       CREATED        SIZE

java         v0        c4a7ac6df09c   3 hours ago    774MB

nginx        latest    5ef79149e0ec   2 weeks ago    188MB

mysql        5.7.44    5107333e08a8   8 months ago   501MB

centos       latest    5d0da3dc9764   2 years ago    231MB

2.创建MySQL容器

[root@docker0 ~]# docker run -itd -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql:5.7.44

a63c59858426f275d608225ce8a297f559e2fca3ff76c2a061eec616db672d13

[root@docker0 ~]# docker ps

CONTAINER ID   IMAGE          COMMAND                   CREATED         STATUS         PORTS                                                  NAMES

a63c59858426   mysql:5.7.44   "docker-entrypoint.s…"   5 seconds ago   Up 4 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   hopeful_bohr

d85664513d17   java:v0        "/usr/local/jdk/bin/…"   9 minutes ago   Up 7 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp              sweet_herschel

3.传mysql

[root@docker0 ~]# docker cp a63c:/var/lib/mysql project_exam_system/

Successfully copied 220MB to /root/project_exam_system/

4.mysql里面写数据

将sql文件上传到MySQL容器中

[root@docker0 project_exam_system]# mkdir mysql

[root@docker0 project_exam_system]# ls

mysql  web

[root@docker0 project_exam_system]# ls mysql/

project_exam_system.sql

[root@docker0 project_exam_system]# head -10  mysql/project_exam_system.sql

create database if not exists project_exam_system charset utf8mb4;

use project_exam_system;

/*

 Navicat MySQL Data Transfer

 Source Server         : MySQL84

 Source Server Type    : MySQL

 Source Server Version : 80400

 Source Host           : localhost:3308

 Source Schema         : project_exam_system

[root@docker0 project_exam_system]# cd

[root@docker0 ~]# docker ps

CONTAINER ID   IMAGE          COMMAND                   CREATED          STATUS          PORTS                                                  NAMES

a63c59858426   mysql:5.7.44   "docker-entrypoint.s…"   9 minutes ago    Up 9 minutes    0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   hopeful_bohr

d85664513d17   java:v0        "/usr/local/jdk/bin/…"   18 minutes ago   Up 17 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp              sweet_herschel

[root@docker0 ~]# docker cp project_exam_system/mysql/project_exam_system.sql a63c:/

Successfully copied 11MB to a63c:/

5.登录MySQL

使用外部数据库连接容器的MySQL,然后运行sql文件

[root@docker0 ~]# docker exec -it a63c mysql -uroot -proot

mysql: [Warning] Using a password on the command line interface can be insecure.

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 8

Server version: 5.7.44 MySQL Community Server (GPL)

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;

+---------------------+

| Database            |

+---------------------+

| information_schema  |

| mysql               |

| performance_schema  |

| project_exam_system |

| sys                 |

+---------------------+

5 rows in set (0.00 sec)

mysql>

6.测试

java的Dockerfile内容:

FROM centos:latest

ADD application.properties /application.properties

ADD Project_ExamSystem-V1.0.0.war /Project_ExamSystem-V1.0.0.war

WORKDIR /

EXPOSE 8080

RUN mkdir /usr/local/jdk

CMD [ "/usr/local/jdk/bin/java -jar Project_ExamSystem-V1.0.0.war" ]

nginx的Dockerfile内容:

FROM nginx:latest
ADD dist project_exam_system/web/
WORKDIR project_exam_system/web
EXPOSE 80
WORKDIR project_exam_system/web/
RUN mkdir web
CMD ["nginx","-g","daemon off;"]
 

mysql的Dockerfile内容:

FROM mysql:5.7.44
WORKDIR /project_exam_system/mysql
ENV MYSQL_PASSWORD=root
EXPOSE 3306
WORKDIR project_exam_system/
RUN mkdir mysql
ADD projet_exam_system.sql project_exam_system/mysql/
CMD [ "exec -it mysql -uroot -proot" ]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2090169.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[知识技巧] iPhone 15 卡在恢复模式修复方法

如果您发现您的iPhone 15 卡在恢复模式下&#xff0c;这可能是一次相当紧张的经历&#xff0c;尤其是当它阻止您使用手机时。请放心&#xff0c;这是许多 iPhone 用户面临的共同挑战。幸运的是&#xff0c;有一些行之有效的方法可以解决此问题并将您的 iPhone 恢复到正常功能。…

启动盘如何复原

条件&#xff1a; 本教程适合Windows系统 通过Diskpart CMD启动U盘还原U盘在Windows中还有CMD命令可以使用 先“WindowsR”呼出运行窗口&#xff0c;在命令行中搜索"Diskpart"。点击回车输入“list disk”并且回车输入“select disk X”(X为替换可启动u盘的磁盘号)…

Vite项目启动服务器时报错 Error: Cannot find module @rollup/rollup-win32-x64-msvc.

前言&#xff1a; 网上找了很多方法&#xff0c;尝试后都不行。在某篇文章评论区种找到了一种方法解决了&#xff0c;谨以此篇文章记录解决问题的方案&#xff0c;方便日后使用。 解决方法&#xff1a;github链接 Cannot find module rollup/rollup-win32-x64-msvc (rollup 4.…

idea配置连接数据库的操作方法(适配不同版本)

文章目录 一、IDEA找不到database图标的解决方法二、链接数据库 一、IDEA找不到database图标的解决方法 首先很多小伙伴说我左右侧边栏都找了找不到数据库图标 解决办法&#xff1a; 第一种&#xff1a;选择 View --> Tool Windows --> Database 如果你的idea版本在这里…

昂瑞微IPO:华为、小米看重的国产射频芯片,“腾飞”了吗?

从一些科技大厂的投资动向中&#xff0c;往往能够发现一些新的技术力量正在酝酿。 据悉&#xff0c;近日&#xff0c;小米、华为投资的射频芯片供应商——北京昂瑞微电子技术股份有限公司&#xff08;以下简称“昂瑞微”&#xff09;在北京证监局办理辅导备案登记&#xff0c;…

docker简单私有仓库的搭建

示例&#xff1a; 【搭建简单的Registry仓库】 1. 下载 Registry 镜像 [rootdocker ~]# docker pull registry #可以查看开放的端口&#xff0c;需要把端口暴露出来 [rootdocker ~]# docker history registry:latest [rootdocker ~]# docker run -d -p 5000:5000 --restartal…

若依微服务ruoyi-auth在knife4j中不显示问题解决

关于若依微服务ruoyi-auth在knife4j中不显示问题解决 解决办法 一、添加swagger依赖文件 在ruoyi-auth模块下的pom.xml文件中添加ruoyi-common-swagger依赖 <!-- RuoYi Common Swagger --><dependency><groupId>com.ruoy

DS1202ZE - 零碎使用记录

文章目录 DS1202ZE - 零碎使用记录概述笔记测量通道频率是使用频率测量还是内建的频率计测量&#xff1f;如何让Ultra Sigma检测到DS1202ZE?如何消除过多的测量结果?通过UltraScope对示波器屏幕进行截图END DS1202ZE - 零碎使用记录 概述 手头在使用DS1202ZE, 将零碎的操作…

javascript网页设计案例详细讲解

​ 大家好&#xff0c;我是程序员小羊&#xff01; 前言&#xff1a; 我们将以深入讲解一个基于JavaScript的网页设计案例。这个案例不仅涵盖了基础的DOM操作、事件处理和动画效果&#xff0c;还将涉及更高级的主题&#xff0c;如异步数据加载、表单验证、模块化设计和响应式布…

【动态规划】两个数组 / 字符串的dp问题(子序列、子数组问题、匹配问题、字符串问题)

文章目录 前言算法题1.最长公共子序列2.不相交的线3.不同的子序列4.通配符匹配5.正则表达式匹配6.交错字符串7.两个字符串的最小ASCII删除和8.最长重复子数组 前言 两个数组或字符串的动态规划问题通常涉及到比较和匹配元素。以下是两个常见的例子&#xff1a; 最长公共子序列…

「OC」CAlayer——巧用动画实现一个丝滑的折叠cell

「OC」CAlayer——巧用动画实现一个丝滑的折叠cell 前言 在这个暑假集训后的时间&#xff0c;都在家里做着学习笔记的整理&#xff0c;深入学习了CALayer的相关知识&#xff0c;掌握了第三方库Masonry自动布局的用法&#xff0c;以及学习了MVC的相关内容&#xff0c;正好组内…

在Postgresql中计算工单的对应的GPS轨迹距离

一、概述 在某个App开发中&#xff0c;要求记录用户的日常轨迹&#xff0c;在用户巡逻设备的时&#xff0c;将记录的轨迹点当做该设备巡逻时候的轨迹。 由于业务逻辑上没有明确的指示人员巡逻工单-GPS位置之间的关系&#xff0c;所以通过时间关系进行轨迹划定。 二、创建测试表…

Core ML

本文翻译整理自&#xff1a;Core ML : https://developer.apple.com/cn/documentation/coreml/ 文章目录 一、概览二、获取 Core ML 模型三、将 Core ML 模型集成到你的 App 中1、将模型添加到您的Xcode项目2、在代码中创建模型3、获取要传递给模型的输入值4、使用模型进行预测…

vue2踩坑记录:el-select如何绑定对象

页面上的下拉框&#xff1a; 选中人员之后&#xff0c;需要使用人员的其它信息做后续操作。所以不能只绑定用户Id&#xff0c;需要绑定整个item(用户对象)&#xff0c;这样每次change事件所获取到的newValue是整个对象&#xff0c;而且v-model中的变量指向的也是整个对象&#…

Windows bat脚本学习五(函数)

一、简介 使用bat脚本时&#xff0c;经常要使用函数&#xff0c;而函数的传参和返回值也是非常重要的&#xff0c;今天就总结一下bat中函数相关的使用方法。 二、函数 1.函数调用 :函数名 在Bat中&#xff0c;使用“:函数名”来定义一个函数。 见如下代码&#xff1a; echo o…

安装KataGo+Sabaki围棋引擎

1.由于我的用户名是中文名,修改TMP和TEMP为SystemRoot(后续修改回来) 2.加入xx.bin文件后,cmd输入katago.exe genconfig -model model.bin -output gtp_custom.cfg 3.KataGo下载完成 4.配置GUI界面

ubuntu录屏解决ubuntu下无法播放MP4格式文件的方法

参考 gnome gnome是系统自带的录屏&#xff0c;通过ctrlshiftaltr触发 保存到了视频目录下&#xff0c;webm格式文件。 screencastify 这是一个chrome扩展&#xff0c;&#xff0c;一般不推荐使用 recapp 比gnome自由一些&#xff0c;可以自由屏幕录制。但是无法修改录制…

利用流水线实现版本一键发布

目录 1. 背景2. 实现步骤3.1 前置条件3.2 更新版本号和拉出发布分支3.3 生成 diffCommit3.4 自动触发联动编译3.5 让通知更友好 3. 总结 1. 背景 通常我们发布版本时会有这样几个步骤&#xff0c;更改版本号&#xff0c;拉出 release 分支&#xff0c;生成发布包。但是博主所在…

关于ThinkPHP 5 框架开启自动搜索控制器 无法访问的问题坑

假如当前有一个登陆接口功能 因为后续会有不同版本的 登陆接口 这时候 我们可以在控制器中 新建文件夹 做区分 方便管理即 新建了一个 api 模块 文件路径是 api/controller/V1/Login 正常情况下 controller 目录下 是 控制器文件 login.php 文件&#xff0c;由于我们有多个…

地下车库电车这样充电,必须改

文 | AUTO芯球 作者 | 响铃 我是真的害怕啊 你们看&#xff0c;我住的小区&#xff0c; 都是这样子啊 一个这样子的塑料盒&#xff0c;最多一个铝板盒子&#xff0c;就给车充电了 你看看 这样的塑料电槽 就这样裸露在外面了 有些摸一下 电线都在发烫 现在我们小区内这…