安装
我自己的理解中 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