安装

我自己的理解中 docker-compose能够帮助解决dokcerfile不能解决的问题报错 启动容器时需要-v -p 等,而且docker-compose可以启动多个容器

不需要安装gcc的方案,实测嗷嗷行!

centos7安装时出现提示 version `GLIBC_2.28' not found 时 不需要安装gcc的方法:
这个方法的原文地址:
可以不用看这个链接,用以下方法就完全可以
1.sudo curl -L --fail https://github.com/docker/compose/releases/download/1.28.0/run.sh -o /usr/local/bin/docker-compose
2.sudo chmod +x /usr/local/bin/docker-compose
3./usr/local/bin/docker-compose -v 
如果 3 提示找不到,那就直接docker-compose -v
如果docker-compose -v 后没有出现unable to find image `docker/compose:xxx`locally, 且没有出现docker-compose的版本信息,说明你的docker没有登录,所以用docker login ,然后输入账号密码,没有账号密码就自己注册一下去。

docker-compose.yml 文件的启动方式是: docker-compose up -d

本来想把各个命令写一遍说明,但是觉得没有必要,百度一大堆,这里贴上我自己项目的,简易版的内容

version: "3.2"
services:
  mysql:
    networks:
      - wyc #我这个项目叫wyc,所以就很随意的把网桥也起个名字叫wyc
    build:
      context: ./mysql  #上下文,就是指的是docekrfile所以的那个文件目录
      dockerfile: ./dockerfile #dockerfile的名称,我这里直接就叫dockerfile
    restart: always  #docker重启后,容器也自动启动
    image: wyc_mysql  #dockerfile生成镜像后的名称,如果没有build标签的话,就指已有镜像名
    container_name: wyc_mysql_01 #生成容器的名称
    ports: #暴露的端口,注意要用 双引号括起来,这是官网推荐的方式,不然好像60一下的端口会出问题,好像奥,我不确定。
      - "3339:3339"
    volumes: #挂载,我这个是mysql,随意挂载了配置文件、log、data、以及容器创建时的初始化文件目录,最后这个可以把sql文件放进去,容器创建后,就是自动导入sql文件,我之前试过那种使用shell脚方式导数据的,特别坑爹,不建议使用。
      - "/home/fd/wycplus/mysql/conf.d/:/etc/mysql/conf.d/"
      - "/home/fd/wycplus/mysql/data/:/var/lib/mysql/"
      - "/home/fd/wycplus/mysql/log/:/var/log/mysql/"
      - "/home/fd/wycplus/mysql/init.d/:/docker-entrypoint-initdb.d/"
    environment:
#      - MYSQL_USER= 'root'
#      - MYSQL_PASS= 'root'
      MYSQL_ROOT_PASSWORD: root  #如果不使用docker-compose的话,这句是在docker run 时使用 -e 的方式指定的,下方两个 我试过去掉,也没问题,暂时放着吧
      MYSQL_ROOT_HOSE: '%'
      MYSQL_DATABASE: wyc_test
      TZ: Asia/Shanghai  #时间加上


  tomcat:
    build:
      context: /home/fd/wycplus/tomcat/dockerfile
      dockerfile: ./dockerfile
    image: wyc_tomcat
    restart: always
    container_name: wyc_tomcat_01
    ports:
      - "8077:8077"
#      - "8080:8080"
    volumes:
      - "/home/fd/wycplus/tomcat/dockerfile/conf:/usr/local/tomcat/conf"
      - "/home/fd/wycplus/tomcat/dockerfile/webapps:/usr/local/tomcat/webapps"
      - "/home/fd/wycplus/tomcat/dockerfile/logs/:/usr/local/tomcat/logs"
    networks:
      - wyc
    depends_on:  #依赖于redis和mysql,只有这两个启动来之后,tomcat这个才开始
      - redis
      - mysql


  redis:
    build:
      context: /home/fd/wycplus/redis
      dockerfile: ./dockerfile
    image: wyc_redis
    container_name: wyc_redis_01
    ports:
      - "6379:6379"
    networks:
      - wyc
    volumes:
      - "/home/fd/wycplus/redis/conf:/redis/conf"
      - "/home/fd/wycplus/redis/data:/redis/data"
      - "/home/fd/wycplus/redis/logs:/redis/logs"
    command:
      redis-server /redis/conf/redis.conf  #运行redis-server 并使用这个位置的conf文件来启动,配置文件是我之前改好的,然后挂载上去
networks:
  wyc:

本来是贴出了redis的配置文件,但是后来csdn好像开始对相似文章进行验重了,导致只要贴配置文件就会审核不通过无法发布文章,所以这里就不贴出redis的conf内容了

其他:

如果想使用自己创建的外部数据卷和网桥需要使用的命令
另 需要在yml文件底部使用 volumes  和networks 中使用external: true

1.手动创建外部数据卷:docker volume  create xxx 
这个卷的位置是默认的docker目录下,是哪个我忘了,find / -name xxx 就能查到了,我不建议使用这种默认的放置,我都是自己维护一个目录。

2.手动创建网桥:docker network create -d bridge xxx