Compose 是用于定义和运行多容器Docker应用程序的工具。通过Compose,您可以使用YML文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从YML文件配置中创建并启动所有服务。
Compose 使用的三个步骤:
使用Dockerfile定义应用程序的环境。
使用docker-compose.yml定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
最后,执行docker-compose up命令来启动并运行整个应用程序。
docker-compose.yml的配置案例如下(配置参数参考下文):
version: '3'services: biz: build: . image: biz ports: - "9140:9140" container_name: biz
Linux 上我们可以 Github上下载它的二进制包来使用,最新发行的版本地址:https://github.com/docker/compose/releases。
运行以下命令以下载Docker Compose的当前稳定版本:
[root@localhost ~]# curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname
-s)-$(uname -m)" -o /usr/local/bin/docker-compose
要安装其他版本的Compose,请替换1.24.1。
将可执行权限应用于二进制文件:
[root@localhost ~]# chmod +x /usr/local/bin/docker-compose
创建软链:
[root@localhost ~]# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
测试是否安装成功:
[root@localhost ~]# docker-compose --version
docker-compose version 1.24.1, build 4667896b
注意: 对于alpine,需要以下依赖包:py-pip、python-dev、libffi-dev、openssl-dev、gcclibc-dev和make。
Mac 的 Docker 桌面版和 Docker Toolbox已经包括 Compose 和其他 Docker 应用程序,因Mac用户不需要单独安装Compose。
Windows 的Docker桌面版和 Docker Toolbox已经包括Compose和其他Docker 应用程序,因此Windows用户不需要单独安装Compose。
1、项目准备
# 打包项目,获得jar包marktrace-edu-biz-service-0.0.1-SNAPSHOT.jar
[root@localhost ~]# mvn clean package
2、创建 Dockerfile 文件
# 在jar包所在路径创建Dockerfile文件,添加以下内容
[root@localhost ~]# vim Dockerfile
FROM centos# 维护者信息MAINTAINER YangXingZhen 675583110@qq.com# 安装wget、net-toolsRUN yum -y install wget net-tools >/dev/null 2>&1RUN yum clean all >/dev/null 2>&1# 设置时区RUN rm -rf /etc/localtimeRUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime# 创建项目路径RUN mkdir -p /data/marktrace/marktrace-edu-biz-service# 拷贝JDK软件包COPY jdk-8u181-linux-x64.tar.gz /usr/local# 解压JDK软件包RUN tar xf /usr/local/jdk-8u181-linux-x64.tar.gz -C /usr/localRUN chown -R root.root /usr/local/jdk1.8.0_181# 删除JDK软件包RUN rm -rf /usr/local/jdk-8u181-linux-x64.tar.gz# 配置JAVA环境ENV JAVA_HOME=/usr/local/jdk1.8.0_181ENV CLASSPATH=\$CLASSPATH:\$JAVA_HOME/lib:\$JAVA_HOME/jre/libENV PATH=\$JAVA_HOME/bin:\$JAVA_HOME/jre/bin:\$PATH:\$HOMR/bin# 加载JAVA环境RUN source /etc/profile# 拷贝项目包COPY marktrace-edu-biz-service-0.0.1-SNAPSHOT.jar /data/marktrace/marktrace-edu-biz-service# 暴露9140端口EXPOSE 9140# 启动biz项目ENTRYPOINT ["java","-jar","/data/marktrace/marktrace-edu-biz-service/marktrace-edu-biz-service-0.0.1-SNAPSHOT.jar"]
# 在jar包所在路径创建文件docker-compose.yml,添加以下内容
[root@localhost ~]# vim docker-compose.yml
version: '3'services: biz: build: . image: biz ports: - "9140:9140" container_name: biz
该Compose文件定义了1个服务:biz
biz:该 biz服务使用从Dockerfile当前目录中构建的镜像。然后它将容器和主机绑定到暴露的端口9140
4、使用 Compose 命令构建和运行您的应用
# 在docker-compose.yml所在路径下执行该命令Compose就会自动构建镜像并使用镜像启动容器
[root@localhost ~]# docker-compose up
[root@localhost ~]# docker-compose up -d //后台启动并运行容器
5、查询容器启动状态
常见命令
docker-compose ps
docker-compose logs
docker-compose port eureka 8761
docker-compose build
docker-compose start eureka
docker-compose stop eureka
docker-compose rm eureka
docker-compose up
docker-compose kill eureka
Usage:pull [options] [SERVICE...]
Options:
--ignore-pull-failures 忽略pull失败的镜像,继续pull其他镜像.
pull compose文件中所指明的镜像.
docker-compose scale user=3 movie=3
docker-compose run web bash
build: ./dir
---------------
build:
context: ./dir
dockerfile: Dockerfile
args:
buildno: 1
command: bundle exec thin -p 3000
----------------------------------
command: [bundle,exec,thin,-p,3000]
dns: 8.8.8.8
------------
dns:
- 8.8.8.8
- 9.9.9.9
dns_search: example.com
------------------------
dns_search:
- dc1.example.com
- dc2.example.com
environment:
RACK_ENV: development
SHOW: 'ture'
-------------------------
environment:
- RACK_ENV=development
- SHOW=ture
env_file: .env
---------------
env_file:
- ./common.env
expose:
- "3000"
- "8000"
image: java
network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"
ports:# 暴露端口信息 - "宿主机端口:容器暴露端口"- "8763:8763"- "8763:8763"
links:将指定容器连接到当前连接,可以设置别名,避免ip方式导致的容器重启动态改变的无法连接情况
- docker-compose-eureka-server:compose-eureka
volumes:
- /lib
- /var
--no-color 单色输出,不显示其他颜.
-f, --follow 跟踪日志输出,就是可以实时查看日志
-t, --timestamps 显示时间戳
--tail 从日志的结尾显示,--tail=200
更新容器
links
服务之间可以使用服务名称相互访问,links 允许定义一个别名,从而使用该别名访问其它服务
version: '2'services: web: build: . links: - "db:database" db: image: postgres
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。