Docker Compose实战
Docker Compose 安装 Tomcat
Docker Compose 安装 MySQL
mysql5.0
mysql8.0
adminer是一个简洁的网页数据库管理界面,对MySQL功能的更好支持,更高的性能和更高的安全性。访问地址:http://ip:port
Docker Compose 安装 GitLab
概述
GitLab 是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面进行访问公开的或者私人项目。它拥有与 Github 类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序 (Wall) 进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。
安装
这里以安装汉化的 GitLab 社区版 Docker Image为例,镜像地址: https://hub.docker.com/r/twang2218/gitlab-ce-zh,docker-compose.yml
配置如下:
设置管理员初始密码
- 启动容器访问地址:http://ip:8080
- 端口 8080 是因为我在配置中设置的外部访问地址为 8080,默认是 80
- 初始化安装完成后效果如下:
- 设置管理员初始密码,这里的密码最好是 字母 + 数字 组合,并且 大于等于 8 位
- 配置完成后登录,管理员账号是 root
注意: 如果服务器配置较低,启动运行可能需要较长时间,请耐心等待
登陆成功之后界面如下:
基本设置
可见性与访问控制
第一次使用时需要做一些初始化设置,点击管理区域-->设置
帐户和限制
关闭头像功能,由于 Gravatar 头像为网络头像,在网络情况不理想时可能导致访问时卡顿
注册限制
由于是内部代码托管服务器,可以直接关闭注册功能,由管理员统一创建用户即可
GitLab 的账户管理
使用时请不要直接通过 root 用户操作,需要先创建用户,然后通过创建的用户操作,如果你是管理员还需要为其他开发人员分配账户
新建用户
点击管理区域-->新建用户
设置账户信息
同时将自己设置为管理员
修改用户密码
由于我们创建时并没有配置邮箱,所以还需要重新编辑用户信息并手动设置密码
点击编辑跳转账户页面设置初始密码
设置后密码后退出使用账号密码登录gitlab,第一次登录会设置新密码。
创建项目
新建项目提供了空白项目、从模板创建以及导入项目三种方式,这里以空白项目为例
输入项目名称及描述信息,设置可见等级为私有,并且是否通过README 的方式来初始化项目
创建好项目如下
拉取推送代码
SSH方式
在账号中 新建 SSH 公钥 之前将无法通过 SSH 拉取或推送代码。SSH 密钥用于在您的电脑和 GitLab 建立安全连接。
在 Git 安装目录下,使用 ssh-keygen 工具生成SSH KEY
生成的秘钥位置在C:\Users\AS/.ssh/id_rsa,将秘钥复制到服务端
拉取推送代码有很多工具可自行研究,这是主要目的是为了测试推送,就直接使用git命令测试
拉取代码
推送代码
创建一个.gitignore文件commit到本地git push到服务器
HTTP方式
在账户上创建个人令牌,以通过http的方式来拉取和推送代码,与SSH方式不同的是不需要设置秘钥,而是通过github的账号密码拉取和推送代码
Docker Compose 安装 Nexus
概述
Nexus 是一个强大的仓库管理器,极大地简化了内部仓库的维护和外部仓库的访问。
2016 年 4 月 6 日 Nexus 3.0 版本发布,相较 2.x 版本有了很大的改变:
- 对低层代码进行了大规模重构,提升性能,增加可扩展性以及改善用户体验。
- 升级界面,极大的简化了用户界面的操作和管理。
- 提供新的安装包,让部署更加简单。
- 增加对 Docker, NeGet, npm, Bower 的支持。
- 提供新的管理接口,以及增强对自动任务的管理。
安装
我们使用 Docker 来安装和运行 Nexus,docker-compose.yml
配置如下:
注: 启动时如果出现权限问题可以使用:chmod 777 /usr/local/docker/nexus/data 赋予数据卷目录可读可写的权限
登录web控制台 ,地址:http://ip:port/ 界面如下:
初始账号密码,第一次登录的时候会提示admin用户的密码在/nexus-data/admin.password
由于/nexus-data挂载到宿主机的/usr/local/docker/nexus/data目录下,所以admin的密码在/usr/local/docker/nexus/data/admin.password里
登录之后会重置密码,nexus目录下的admin.password会被删除。
Maven 仓库介绍
代理仓库(Proxy Repository)
意为第三方仓库,如:
- maven-central
- nuget.org-proxy
版本策略(Version Policy):
- Release: 正式版本
- Snapshot: 快照版本
- Mixed: 混合模式
布局策略(Layout Policy):
- Strict:严格
- Permissive:宽松
宿主仓库(Hosted Repository)
存储本地上传的组件和资源的,如:
- maven-releases
- maven-snapshots
- nuget-hosted
部署策略(Deployment Policy):
- Allow Redeploy:允许重新部署
- Disable Redeploy:禁止重新部署
- Read-Only:只读
仓库组(Repository Group)
通常包含了多个代理仓库和宿主仓库,在项目中只要引入仓库组就可以下载到代理仓库和宿主仓库中的包,如:
- maven-public
- nuget-group
在项目中使用 Maven 私服
1、配置认证信息
在 Maven的 settings.xml
中添加 Nexus 认证信息(servers
节点下):
Snapshots 与 Releases 的区别
- nexus-releases: 用于发布 Release 版本
- nexus-snapshots: 用于发布 Snapshot 版本(快照版)
Release 版本与 Snapshot 定义如下:
- 在项目
pom.xml
中设置的版本号添加SNAPSHOT
标识的都会发布为SNAPSHOT
版本,没有SNAPSHOT
标识的都会发布为RELEASE
版本。 SNAPSHOT
版本会自动加一个时间作为标识,如:1.0.0-SNAPSHOT
发布后为变成1.0.0-SNAPSHOT-20180522.123456-1.jar
2、配置自动化部署
在 pom.xml
中添加如下代码:
注意事项:
- ID 名称必须要与
settings.xml
中 Servers 配置的 ID 名称保持一致。 - 项目版本号中有
SNAPSHOT
标识的,会发布到 Nexus Snapshots Repository, 否则发布到 Nexus Release Repository,并根据 ID 去匹配授权账号。
3、部署到仓库
4、配置代理仓库
5、上传第三方 JAR 包
Nexus 3.0 不支持页面上传,可使用 maven 命令:
注意事项:
- 建议在上传第三方 JAR 包时,创建单独的第三方 JAR 包管理仓库,便于管理有维护。(maven-3rd)
-DrepositoryId=nexus-releases
对应的是settings.xml
中 Servers 配置的 ID 名称。(授权)
Docker Compose 安装 Registry 私服
概述
官方的 Docker Hub 是一个用于管理公共镜像的地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去。但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜像放到公网当中,那么你就需要 Docker Registry,它可以用来存储和管理自己的镜像。
安装
docker私有仓库章节配置和使用容器运行私有仓库,这里使用 docker-compose
来安装,配置如下:
启动成功后需要测试服务端是否能够正常提供服务,有两种方式:
1、访问
浏览器端http://ip:5000/v2/ 或者终端访问 curl http://ip:5000/v2/
2、查看所有镜像
http://192.168.147.134:5000/v2/_catalog
3、查看指定镜像
http://192.168.147.134:5000/v2/mysql/tags/list
配置 Docker Registry 客户端
1、修改配置文件daemon.json(如果不存在请新建该文件)
在daemon.json文件中添加"insecure-registries":["ip:5000"],如下:
注意:该文件必须符合 json 规范,否则 Docker 将不能启动。
刷新配置:
部署 Docker Registry WebUI
私服安装成功后就可以使用 docker 命令行工具对 registry 做各种操作了。然而不太方便的地方是不能直观的查看 registry 中的资源情况,这里介绍两个 Docker Registry WebUI 工具管理镜像。
docker-registry-frontend
docker-compose.yml
配置如下:
注意:请将配置文件中的主机和端口换成自己仓库的地址
ENV_DOCKER_REGISTRY_HOST: 指定私有仓库的主机地址
ENV_DOCKER_REGISTRY_PORT: 指定私有仓库的端口号
运行成功后在浏览器访问:http://192.168.75.133:8888,但是在主页中找不到任何存储库,报错如下
官方Issues:https://github.com/kwk/docker-registry-frontend/issues/181
真正的原因是寄存器容器不能通过网络通过docker-registry-frontend容器连接,即使这两个容器在同一台机器上,可以采用link或者创建bridge网络,
这里我使用link的方式:
--link:参数中第一个registry是registry的容器名,第二个registry是定义的容器别名(使用别名访问容器),为了方便使用,一般别名默认容器名。
测试如下:
__EOF__

本文链接:https://www.cnblogs.com/bigfairy/p/14281066.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!