【发布时间】:2022-01-17 13:58:26
【问题描述】:
这是 docker-compose
version: '3'
services:
creator:
build:
context: .
dockerfile: Dockerfile.php
image: creator_image
container_name: creator_container
restart: always
volumes:
- ./:/var/www
- ./config/php/php.ini:/usr/local/etc/php/conf.d/php.ini
artisan:
image: creator_image
command: sh -c 'php artisan optimize && php artisan config:cache && php artisan
view:cache && php artisan view:clear && php artisan config:cache'
container_name: creator_container_artisan
depends_on:
- creator
cron:
image: creator_image
command: sh -c '(crontab -l 2>/dev/null; echo "* * * * * cd /var/www && php
artisan schedule:run >> /dev/null 2>&1")| crontab - && /usr/sbin/crond
start -f'
container_name: cronjobs_container
restart: always
volumes:
- ./:/var/www
- ./config/php/php.ini:/usr/local/etc/php/conf.d/php.ini
depends_on:
- creator
webserver:
build:
context: .
dockerfile: Dockerfile.nginx
image: nginx_image
container_name: nginx_container
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./:/var/www
- ./docker/logs:/var/logs
Docker 构建将失败并会给出以下错误
pull access denied for creator_image, repository does not exist or may require ‘docker login’
上面的 docker-compose 构建 Laravel 容器和 Nginx,还清除了一些 Laravel 缓存并重新创建它,以及运行 Laravel cronjobs。
在执行 docker-compose up --build 时构建失败,因为 Docker 尝试在 creator 之前运行 artisan 容器
解决此问题的唯一方法是注释掉 artisan 和 cron 容器,并在构建完成后读取它们。如何解决这个问题? depends_on 没有解决这个问题。
不管我添加多少depends_on,显然是it's deprecated,有没有办法强制Docker以正确的顺序构建容器?
【问题讨论】:
-
docker-compose build && docker-compose up? -
@super 解决了这个问题!老实说,我没想到。非常感谢!
标签: laravel docker docker-compose dockerfile