前情提要:
- 运行在云服务器 Docker 中的 Strapi 项目,由于官方更新比较频繁,所以需要经常生成新的镜像。
- 新版的 Strapi 在执行 yarn install 的时候,有些依赖是从 GitHub 下载的,这种时候就需要开代理才能保证项目依赖顺利安装。
- 不想在服务器上配置代理环境,主要是担心万一因此封了服务器就得不偿失了。
- 研究了一下阿里云的容器镜像服务 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 
