簡體   English   中英

docker 從 docker-compose.yml 構建自定義鏡像

[英]docker build a custom image from docker-compose.yml

我有一個設置,我有一個 Dockerfile 和一個 docker-compose.yml。

Dockerfile:

# syntax=docker/dockerfile:1
FROM php:7.4
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
RUN docker-php-ext-install mysqli pdo pdo_mysql
RUN apt-get -y update
RUN apt-get -y install git
COPY . .
RUN composer install

YML 文件:

version: '3.8'
services:
  foo_db:
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=foo
      - MYSQL_DATABASE=foo
  foo_app:
    image: foo_php
    platform: linux/x86_64
    restart: unless-stopped
    ports:
      - 8000:8000
    links:
      - foo_db
    environment:
      - DB_CONNECTION=mysql
      - DB_HOST=foo_db
      - DB_PORT=3306
      - DB_PASSWORD=foo
    command: sh -c "php artisan serve --host=0.0.0.0 --port=8000"
  foo_phpmyadmin:
    image: phpmyadmin
    links:
      - foo_db
    environment:
      PMA_HOST: foo_db
      PMA_PORT: 3306
      PMA_ARBITRARY: 1
      PMA_USER: root
      PMA_PASSWORD: foo
    restart: always
    ports:
      - 8081:80

為了在新工作站上進行設置,我首先運行的步驟是:

docker build -t foo_php .

據我了解,這將運行 Dockerfile 中的命令並創建一個名為 foo_php 的新圖像。

一旦完成,我將運行docker compose up

問題:

如何告訴 docker 我希望自動構建我的 foo_app 映像,這樣我就可以跳過首先構建映像的步驟。 理想情況下,我將有一個類似於docker compose up ,每次我想啟動容器時都可以調用它。 第一次它會構建它需要的圖像,包括我在 Dockerfile 中描述的這個自定義圖像,隨后調用它只會運行這些圖像。 是否存在實現這一目標的方法?

您可以要求 docker 撰寫每次構建圖像:

docker compose up --build

但是您還需要指示 docker 撰寫要構建的內容:

foo_app:
    image: foo_php
    build:
      context: .

其中context指向包含您的 Dockerfile 的文件夾

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM