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

155 天前
 dream4ever

前情提要:

  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
718 次点击
所在节点    Docker
3 条回复
sofukwird
155 天前
mysql:8.0.33@sha256:xxxxxx
带上 sha256 就不会联网检查是否有新版本了
kengfei
155 天前
把 build: . 删了
dream4ever
155 天前
@kengfei 多谢,原来这么简单🤣

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/997716

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX