【发布时间】:2022-11-11 17:53:22
【问题描述】:
我有一个设置,其中有一个 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 dockerfile docker-image