使用--build进行本地服务更新

  • 即使容器已经 up 起来也可以用此参数进行更新检查,且只对修改过的进行重新构建
    docker-compose up -d --build

    1. [root@localhost docker_exec]# docker-compose up -d --build
    2. Building flask-demo
    3. Sending build context to Docker daemon 3.072kB
    4. Step 1/8 : FROM python:3.9.5-slim
    5. ---> c71955050276
    6. Step 2/8 : RUN pip install flask redis && groupadd -r flask && useradd -r -g flask flask && mkdir /src && chown -R flask:flask /src
    7. ---> Using cache
    8. ---> 5eb28f57ff7f
    9. Step 3/8 : USER flask
    10. ---> Using cache
    11. ---> 1fb2e064bf39
    12. Step 4/8 : COPY app.py /src/app.py
    13. ---> b7eb4713a1e4
    14. Step 5/8 : WORKDIR /src
    15. ---> Running in 22fb8623c248
    16. Removing intermediate container 22fb8623c248
    17. ---> 3d0ef2e89d02
    18. Step 6/8 : ENV FLASK_APP=app.py REDIS_HOST=redis
    19. ---> Running in e60052314609
    20. Removing intermediate container e60052314609
    21. ---> 7e3ea64c34c2
    22. Step 7/8 : EXPOSE 5000
    23. ---> Running in daa059946429
    24. Removing intermediate container daa059946429
    25. ---> cc362a6c19d1
    26. Step 8/8 : CMD ["flask", "run", "-h", "0.0.0.0"]
    27. ---> Running in d56150a80b38
    28. Removing intermediate container d56150a80b38
    29. ---> 539aa4f2eafc
    30. Successfully built 539aa4f2eafc
    31. Successfully tagged flask-demo:latest
    32. docker_exec_redis-server_1 is up-to-date
    33. Recreating docker_exec_flask-demo_1 ... done

    修改docker compose文件增加镜像

  • 增加busybox镜像

    1. version: "3.8"
    2. services:
    3. flask-demo:
    4. build:
    5. context: ./flask
    6. dockerfile: Dockerfile.dev
    7. image: flask-demo:latest
    8. environment:
    9. - REDIS_HOST=redis-server
    10. networks:
    11. - demo-network
    12. ports:
    13. - 8080:5000
    14. redis-server:
    15. image: redis:latest
    16. networks:
    17. - demo-network
    18. busybox:
    19. image: busybox:latest
    20. command: sh -c "while true; do sleep 3600; done"
    21. networks:
    22. - demo-network
    23. networks:
    24. demo-network:
  • 使用docker-compose up -d进行更新

    1. [root@localhost docker_exec]# docker-compose up -d
    2. Pulling busybox (busybox:latest)...
    3. latest: Pulling from library/busybox
    4. 3cb635b06aa2: Pull complete
    5. Digest: sha256:b5cfd4befc119a590ca1a81d6bb0fa1fb19f1fbebd0397f25fae164abe1e8a6a
    6. Status: Downloaded newer image for busybox:latest
    7. docker_exec_redis-server_1 is up-to-date
    8. docker_exec_flask-demo_1 is up-to-date
    9. Creating docker_exec_busybox_1 ... done

    进行删除更新

  • docker-compose文件中删除busybox镜像,系统提示需要使用--remove-orphans来删除不用的容器

    1. [root@localhost docker_exec]# docker-compose up -d
    2. WARNING: Found orphan containers (docker_exec_busybox_1) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
    3. docker_exec_redis-server_1 is up-to-date
    4. docker_exec_flask-demo_1 is up-to-date
  • 使用docker-compose up -d --remove-orphans来进行清理

    1. [root@localhost docker_exec]# docker-compose up -d --remove-orphans
    2. Removing orphan container "docker_exec_busybox_1"
    3. docker_exec_redis-server_1 is up-to-date
    4. docker_exec_flask-demo_1 is up-to-date

    当容器使用了volume就会用restart来更新

  • 通过加载本地的配置文件来使用容器,如果配置文件修改了就需要重启container

  • docker-compose 使用restart 来重启
    1. [root@localhost docker_exec]# docker-compose restart
    2. Restarting docker_exec_flask-demo_1 ... done
    3. Restarting docker_exec_redis-server_1 ... done