V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dream4ever
V2EX  ›  Docker

docker compose 脚本怎样直接从本地镜像启动容器

  •  
  •   dream4ever · 2023-12-05 11:11:47 +08:00 · 949 次点击
    这是一个创建于 380 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前情提要:

    1. 运行在云服务器 Docker 中的 Strapi 项目,由于官方更新比较频繁,所以需要经常生成新的镜像。
    2. 新版的 Strapi 在执行 yarn install 的时候,有些依赖是从 GitHub 下载的,这种时候就需要开代理才能保证项目依赖顺利安装。
    3. 不想在服务器上配置代理环境,主要是担心万一因此封了服务器就得不偿失了。
    4. 研究了一下阿里云的容器镜像服务 ACR ,发现可以用这个免费的服务,把在本地制作好的 Strapi Docker 镜像传上去,然后在服务器上再下载这个镜像就可以了。

    这样一来,在服务器上执行的 docker-compose.yml 文件就需要修改了,不需要编译生成 Docker 镜像,直接用现成的镜像运行服务就可以了。

    假设本地上传的镜像名称为 strapi:4.15.5,要怎样修改下面的 yml 文件,才能让它直接用现成的镜像启动容器呢?

    version: "3"
    
    services:
      strapi:
        container_name: strapi
        build: .
        image: strapi:latest
        restart: unless-stopped
        env_file: .env
        environment:
          DATABASE_CLIENT: ${DATABASE_CLIENT}
          DATABASE_HOST: strapiDB
          DATABASE_PORT: ${DATABASE_PORT}
          DATABASE_NAME: ${DATABASE_NAME}
          DATABASE_USERNAME: ${DATABASE_USERNAME}
          DATABASE_PASSWORD: ${DATABASE_PASSWORD}
          JWT_SECRET: ${JWT_SECRET}
          ADMIN_JWT_SECRET: ${ADMIN_JWT_SECRET}
          APP_KEYS: ${APP_KEYS}
          NODE_ENV: ${NODE_ENV}
        volumes:
          - ./config:/opt/app/config
          - ./src:/opt/app/src
          - ./package.json:/opt/package.json
          - ./yarn.lock:/opt/yarn.lock
          - ./.env:/opt/app/.env
          - ./public/uploads:/opt/app/public/uploads
        ports:
          - "1337:1337"
        networks:
          - strapi
        depends_on:
          - strapiDB
    
      strapiDB:
        container_name: strapiDB
        env_file: .env
        image: mysql:8.0.33
        restart: always
        command: --default-authentication-plugin=mysql_native_password
        environment:
          MYSQL_USER: ${DATABASE_USERNAME}
          MYSQL_ROOT_PASSWORD: ${DATABASE_PASSWORD}
          MYSQL_PASSWORD: ${DATABASE_PASSWORD}
          MYSQL_DATABASE: ${DATABASE_NAME}
        volumes:
          - ./mysql_data:/var/lib/mysql
        ports:
          - "3306:3306"
        networks:
          - strapi
    
    networks:
      strapi:
        name: Strapi
        driver: bridge
    
    3 条回复    2023-12-05 11:37:26 +08:00
    sofukwird
        1
    sofukwird  
       2023-12-05 11:15:48 +08:00 via Android
    mysql:8.0.33@sha256:xxxxxx
    带上 sha256 就不会联网检查是否有新版本了
    kengfei
        2
    kengfei  
       2023-12-05 11:28:01 +08:00
    把 build: . 删了
    dream4ever
        3
    dream4ever  
    OP
       2023-12-05 11:37:26 +08:00 via iPhone
    @kengfei 多谢,原来这么简单🤣
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2576 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 15:35 · PVG 23:35 · LAX 07:35 · JFK 10:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.