没有最新镜像版本的 Docker 容器

时间:2021-02-27 15:05:45

标签: docker docker-compose

我在生产服务器上遇到了一个问题,容器包含 latest 版本的映像,但是当我执行它时,内容不是最后一个。

为了更新 docker 镜像,我用这些命令执行了一个小脚本

docker-compose pull
docker-compose up -d --remove-orphans
docker-compose prune -fa

当然,docker服务中使用的镜像是带有latest标签的

image: registry.gitlab.com/xxxxx/api:latest

这是两个带有容器图像内容的屏幕截图,以查看差异

Container content

Image content

这是我的docker-compose.yml

version: '3.3'

services:
  traefik:
    image: "traefik:v2.4"
    container_name: "traefik"
    command:
      - "--api"
      - "--providers.docker"
      - "--entrypoints.websecure.address=:443"
      - "--entrypoints.web.address=:80"
      - "--certificatesresolvers.myresolver.acme.tlschallenge=true"
      - "--certificatesresolvers.myresolver.acme.email=com@xxxxx.com"
      - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
      - "--pilot.token=xxxxx"
    ports:
      - 80:80
      - 443:443
    volumes:
      - "./letsencrypt:/letsencrypt"
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
    labels:
      # dashboard
      - "traefik.http.routers.monitor.service=api@internal"
      - "traefik.http.routers.monitor.rule=Host(`monitor.xxxxx.com`)"
      - "traefik.http.routers.monitor.entrypoints=websecure"
      - "traefik.http.routers.monitor.tls.certresolver=myresolver"

      # global redirect to https
      - "traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)"
      - "traefik.http.routers.http-catchall.entrypoints=web"
      - "traefik.http.routers.http-catchall.middlewares=redirect-to-https"

      # middleware redirect
      - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"

  api:
    image: registry.gitlab.com/xxxxx/api:latest
    ports:
      - 4200:8080
    volumes:
      - api-data:/app
    depends_on:
      - db
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.api.rule=Host(`api.xxxxx.com`)"
      - "traefik.http.routers.api.entrypoints=websecure"
      - "traefik.http.routers.api.tls.certresolver=myresolver"

  front:
    image: registry.gitlab.com/xxxxx/front:latest
    ports:
      - 3000:3000
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.front.rule=Host(`dev.xxxxx.com`)"
      - "traefik.http.routers.front.entrypoints=websecure"
      - "traefik.http.routers.front.tls.certresolver=myresolver"

  panel:
    image: registry.gitlab.com/xxxxx/panel:latest
    ports:
      - 3001:3000
    depends_on:
      - api
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.panel.rule=Host(`admin.xxxxx.com`)"
      - "traefik.http.routers.panel.entrypoints=websecure"
      - "traefik.http.routers.panel.tls.certresolver=myresolver"

  coming-soon:
    image: registry.gitlab.com/xxxxx/coming-soon:latest
    ports:
      - 3002:3000
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.coming-soon.rule=Host(`xxxxx.com`) || Host(`www.xxxxx.com`)"
      - "traefik.http.routers.coming-soon.entrypoints=websecure"
      - "traefik.http.routers.coming-soon.tls.certresolver=myresolver"

  db:
    image: postgres
    ports:
      - 5432:5432
    volumes:
      - db-data:/var/lib/postgresql/data/
    env_file:
      - .env
    restart: always

  adminer:
    image: dpage/pgadmin4
    ports:
      - 5000:80
    volumes:
      - adminer-data:/root/.pgadmin
    env_file:
      - .env
    depends_on:
      - db
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.adminer.rule=Host(`adminer.xxxxx.com`)"
      - "traefik.http.routers.adminer.entrypoints=websecure"
      - "traefik.http.routers.adminer.tls.certresolver=myresolver"

  gitlab-runner:
    image: gitlab/gitlab-runner:latest
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    deploy:
      mode: replicated
      replicas: 2
      update_config:
        parallelism: 4
        delay: 30s

volumes:
  db-data:
  api-data:
  adminer-data:

0 个答案:

没有答案