本文在centos7环境下运行。
参考资料
wvp_pro_compose项目?https://github.com/SaltFish001/wvp_pro_compose
一、生成wvp-pro docker文件步骤?
1. 安装Docker及docker-compose
(1)安装python-pip。?CentOS7下安装python-pip_我是小坏-CSDN博客_centos安装pip
(2)可从github下载docker-compose二进制程序文件,release发布版本,推荐下载v2.0.0以上?https://github.com/docker/compose?。
(3)下载的docker compose文件重命名为docker-compose,并将文件放到 /usr/local/bin/? 文件夹下
(4)给文件添加执行权限?chmod +x /usr/local/bin/docker-compose
(5)此时,docker-compose ?--version查看看是否安装成功
可参考:??Docker学习笔记3:CentOS7下安装Docker-Compose_我是小坏-CSDN博客_centos7安装docker-compose
注:二进制文件docker-compose。ubuntu和centos都是将程序放在?/usr/local/bin/ 目录下。
安装遇见问题?
(1)pip版本低
????????如果pip -V版本过低,那么安装高版本docker-compose会报错。 安装高版本pippython -m pip install -upgrade pip命令升级无效。并且升级后pycharm里还是显示旧版本_Gocdesign的博客-CSDN博客
2. 配置环境参数
? ? ? ? ?复制一份.env.example到根目录, 并改名.env
? ? ? ? ?必须修改SIP_IP以及STREAM_HOST变量。WVP_PORT是wvp的web访问接口。仅需要修改这个配置文件,其他不需要改动。
?????????根据描述, 按需修改各项变量, 特别注意?wvo/config/config.ini?文件的 [http].port需要手动修改,且要与.env配置中的MEDIA_PORT 保持一致
????????.env用来指定wvp、redis、mysql的docker环境变量值。docker-compose读取此文件来设置的docker环境变量;wvp、redis、mysql的启动命令会使用此环境变量来进行端口映射。wvp的application.yml会读取启动命令的变量值填写配置项。
3. 启动docker-compose
? ? ? ? 进入?docker-compose.yaml所在目录即 wvp_pro_compose根目录下,运行如下命令。
docker-compose up -d
? ? ? ? 注意:运行命令前启动docker。Centos7下?systemctl start docker?
遇见问题
(1)?failed: port is already allocated 。删除docker启动时存储配置接口的文件,下面文章中使用service命令,centos7对应命令时systemctl。【解决方案】Docker 错误 “port is already allocated” 解决方法_明天,争取的博客-CSDN博客
(2)虚拟机没有足够磁盘空间。?VirtualBox和VMware虚拟机centos(/dev/mapper/centos-root)磁盘扩容(亲测有效)_我爱大数据-CSDN博客
(3)运行报错,can’t sh run.sh 可能是docker-compose版本问题,升级版本试下。
(4)Unable to correct missing packages.E: Failed to fetch http://mirrors.aliyun.com/ubuntu/pool/main/libt/libtheora/libtheora0_1.1.1+dfsg.1-15ubuntu2_amd64.deb ?Undetermined Error [IP: 125.39.43.239 80]? E: Aborting install.
解决:修改docker dns 。两种方式如下
cat /etc/docker/daemon.json
{
"dns" : [
"114.114.114.114",
"8.8.8.8"
]
}
sudo service docker restart
docker run --dns 10.0.0.2 --name mybusybox busybox:latest
启动容器时命令行指定环境变量和容器内本身的环境变量,哪个优先级高? 启动容器时执行环境变量相当于重新给容器的环境变量赋值。所以,本身这个问题不正确。
spring boot的application.yml通过${变量名}读取系统环境变量。那么启动spring boot程序时,指定的变量和系统自带的环境变量同名,哪个优先级高。? 很明显是启动时命令行指定的优先级高。
dockerfile中cmd生成的镜像。是不是每次run容器时,都会执行cmd命令吗??
4.查看生成镜像和容器
????????此时,会生成wvp、redis、mysql和依赖环境镜像。以及根据镜像启动容器
?二、修改参数后,再次docker-compose
上面docker-compose自动启动容器,那么如果有参数修改,如何自己使用命令启动容器?
上面理解有误。如果容器参数需要修改,那么将容器删除,修改.env或docker-compose.yaml文件的参数,然后重新? docker-compose up -d。
其中docker-compose.yaml第一次启动时,已经将所有镜像下载好,所以以后在启动不再需要重新下载。将docker-compose.yaml的wvp配置项修改为image:镜像名,而不再需要指定build配置项让其重新构建。
?(1)删除旧容器
? ? ? ? docker rm $(docker ps -aq)
?(2)重新启动? docker-compose
? docker-compose up -d
容器映射好端口,导出为镜像,启动镜像是不是还是以前容器映射好的端口。?
三、docker-compose、dockerfile学习
Docker Dockerfile | 菜鸟教程
|