docker 光速入门-- 2. docker-compose & bash aliases

本文介绍Docker-Compose的基本概念与安装方法,详细解释如何通过yaml配置文件管理多个Docker容器,以及如何利用bash别名简化Docker-Compose的日常操作,提升效率。

docker-compse

什么是docker-compose 它是由python 编写的, 前身是fig,通过yaml 配置文件管理多个docker 容器的命令行工具。当我们运行一个项目时,会有多个docker 容器互相配合完成的。比如 LNMP 环境,一般一个docker容器运行一个程序,(可以将docker 容器理解为单独的进程) ,这时候如果用docker 命令一个一个去管理会显得非常麻烦,这时候就体现出docker-compse的好处了

安装

我的环境是 VMware + centos7 , docker-compose 是python写得,是通过pip安装的, centos 7 默认不带pip,首先我们安装pip

安装pip

1. 添加epel 源

$ sudo yum install python-pip

 

2. 安装pip

$ sudo yum install python-pip
$ docker-compose  --version
docker-compose version 1.23.2, build 1110ad0

至此docker-compose 安装好了。其他方法参考 install docker-compose

docker-compose bash alias

当我们在使用docker-compose 时 每次都要敲那么长的命令,很烦。至此小弟在github 上找了段jio本,可能需要梯子@jodumontjodumont/bash_aliases-docker-compose

  1. curl -ko $HOME/.bash_aliases-docker-compose https://gist.githubusercontent.com/jodumont/d8ade3ab173700e3369f04fbe0334fde/raw/ced78642a5682e7ec6ee7fc89367b929ef35f366/bash_aliases-docker-compose
  2. echo -e "\nif [ -f ~/.bash_aliases-docker-compose ]; then \n. ~/.bash_aliases-docker-compose\nfi" >> $HOME/.bashrc
  3. . $HOME/.bashrc

词汇表

  • dcu == Docker-Compose Up
  • dcl == Docker-Compose Logs
  • dcs == Docker-Compose Stop
  • dcsr == Docker-Compose Stop & Remove
  • dcsr == Docker-Compose Stop, Remove & Up

也可以将此段代码复制到 .bash_aliases-docker-compose

docker-compose aliases
## How to install/use it
### 1. $ curl -ko $HOME/.bash_aliases-docker-compose https://gist.githubusercontent.com/jodumont/[...]/bash_aliases-docker-compose
### 2. $ echo -e "\nif [ -f ~/.bash_aliases-docker-compose ]; then \n. ~/.bash_aliases-docker-compose\nfi" >> $HOME/.bashrc
### 3. $ . $HOME/.bashrc

## dcu == Docker-Compose Up
alias dcu="docker-compose up -d --remove-orphans"

## dcl == Docker-Compose Logs
alias dcl="docker-compose logs"

## dcs == Docker-Compose Stop
### Else like : dcs discovery # which is the name of a container inside this composition
function dcs {
  if [ -z "$1" ]; then
    docker-compose stop
  else
    for n in $@
      do
        docker-compose stop "$n"
      done
  fi
}

## dcsr == Docker-Compose Stop & Remove
alias dcsr="docker-compose stop && yes|docker-compose rm"

## dcsr == Docker-Compose Stop, Remove & Up
alias dcsru="docker-compose stop && yes|docker-compose rm && docker-compose up -d --remove-orphans"

有兴趣的自己研究吧

已知这是后端项目中的application.yml中的部分内容: server: port: 9090 spring: data: redis: port: 6379 host: cache-server1 password: 123456 datasource: url: jdbc:mysql://db-server1:3306/docker?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8&useUnicode=true username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver mybatis: mapper-locations: classpath*:mapper/*.xml type-aliases-package: com.lu.hotel.entity configuration: map-underscore-to-camel-case: true 把后端项目打包成hotel-0.0.1-SNAPSHOT.jar后,在docker中使用docker compose对springboot项目进行部署,新建了一个mydata目录,下面是dockerfile,docker-compose.yml,mysql,redis和hotel-0.0.1-SNAPSHOT.jar,其中把数据库的hotel.sql文件放在了mysql/init下面,hotel.sql是整个数据库的SQL文件,里面有很多表,已知dockerfile的内容如下: FROM openjdk:23-jdk-bookworm MAINTAINER docker COPY hotel-0.0.1-SNAPSHOT.jar /hotel.jar ENTRYPOINT ["java", "-jar", "/hotel.jar"] EXPOSE 9090 已知docker-compose.yml的文件内容如下: services: back-server: build: . container_name: hotel ports: - "9090:9090" networks: - demo_net depends_on: - cache-server - db-server cache-server: image: redis:6.0.8 container_name: "cache-server1" ports: - "6379:6379" volumes: - ./redis/data:/data networks: demo_net: ipv4_address: 172.16.0.4 db-server: image: mysql:5.7 container_name: "db-server1" environment: MYSQL_ROOT_PASSWORD: 'root' MYSQL_ALLOW_EMPTY_PASSWORD: 'no' MYSQL_DATABASE: 'docker' MYSQL_USER: 'docker' MYSQL_PASSWORD: 'docker' ports: - "3307:3306" volumes: - ./mysql/db:/var/lib/mysql - ./mysql/init:/docker-entrypoint-initdb.d networks: demo_net: ipv4_address: 172.16.0.3 command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci networks: demo_net: ipam: config: - subnet: 172.16.0.0/24 以上部分
03-20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值