1:要启动容器必须都先创建好镜像文件

C:\Users\dell>docker images
REPOSITORY   TAG        IMAGE ID       CREATED       SIZE
poi          1.0        22738bb31074   4 hours ago   105MB
redis        latest     506734eb5e71   6 days ago    138MB
nginx        latest     eea7b3dcba7e   7 days ago    187MB
mysql        8.0        5761fe35fa53   13 days ago   577MB
openjdk      8-alpine   a3562aa0b991   4 years ago   105MB

C:\Users\dell>

2:docker -compse启动容器

version: '2'
services:
  compose-redis:
    image: redis
    ports:
      - "6379:6379"
    restart: always
    container_name: compose-redis
#    command: redis-server  --appendonly yes
    volumes:
      - ./redis.conf:/etc/redis/redis.conf

  compose-mysql:
    image: mysql:8.0
    container_name: compose-mysql
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: root
    ports:
      - "3306:3306"
    volumes:
      - ./sql:/docker-entrypoint-initdb.d   #./代表和docker-compose.yml同目录下
      - ./mysql/conf:/etc/mysql/mysql.conf.d
      - ./mysql/log:/var/log/mysql
      - ./mysql/data:/var/lib/mysql

  compose-nginx:
    image: nginx
    container_name: compose-nginx
    restart: always
    depends_on: #以后compose-poi启动后再启动该容器
      - compose-poi
    ports:
      - "88:88"
    links:
      - compose-poi
    volumes:
      - ./dist:/home/hdxWeb     #映射前端dist下的全部文件到nginx容器/home/hdxWeb目录下
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf  #映射配置nginx.conf文件设置,配置请求跳转到/home/hdxWeb目录下等
      - ./work/logs/nginx:/etc/nginx/logs

  compose-poi:
    restart: on-failure
    container_name: compose-poi
    image: poi:1.0
    depends_on: #depends_on 关键字用于定义服务之间的依赖关系。它指定了在启动服务之前需要启动的其他服务
      - compose-redis
      - compose-mysql
    links:  #links 关键字用于链接服务之间的网络连接,允许一个服务能够访问另一个服务
      - compose-redis
      - compose-mysql
    ports:
      - "8088:8088"
    volumes: #应该使用瘦身部署jar方便更新
      - ./target/poi.jar ./app/
      - ./target/resources/ ./app/resources/
      - ./target/lib/ ./app/lib/
  • 注意使用挂载命令volumes的时候,类似文件挂载可以这样写

  ./target/poi.jar ./app/

表示宿主机docker-compose.yml当前目录下的/target/poi.jar文件挂载到容器默认目录app下(如果是通过命令docker run -d -p 8088:8088 -v ./target/poi.jar:./app/,这样启动容器有两个报错,第一个是这样必须写绝对路径,不能写相对路径,第二是文件指定必须挂载到指定文件,应该改成:命令docker run -d -p 8088:8088 -v G:/target/poi.jar:/test/app/ poi.tar)

3:dockerfiled生成的镜像文件可以使用copy命令或者add命令添加相应资源到启动容器内,但是生成镜像的时候没有mounts绑定挂载宿主机资源的方法

记住规则:文件挂载文件,文件夹挂载文件夹就可以了

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐