首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >docker合成构建序列

docker合成构建序列
EN

Stack Overflow用户
提问于 2019-05-28 23:45:38
回答 1查看 144关注 0票数 1

我有一个多容器应用程序(Laravel+Nginx+PostgreSQL),我使用docker compose来构建我的应用程序。

在构建过程中,我需要在我的Laravel容器中运行php artisan migrate,但是我有一个问题- Laravel容器可以在Postgres容器之前开始构建,所以我得到了这个错误,因为我的DB主机还没有准备好。如何在我的docker-compose.yml中设置类似“构建序列”的内容?

我当前的docker-compose.yml

代码语言:javascript
复制
version: '3.3'
services:

  phpfpm:
    build:
      context: laravel-docker
    depends_on:
      - db
    container_name: phpfpm
    restart: always
    volumes:
      - /var/www/html/vendor/
      - ./laravel-docker:/var/www/html
    networks:
      - app-network

  db:
    image: postgres:9.6.5-alpine
    container_name: db
    restart: always
    environment:
      POSTGRES_DB: blabla
      POSTGRES_USER: blabla
      POSTGRES_PASSWORD: blabla
    volumes:
      - ./db_data:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    networks:
      - app-network

laravel-docker/Dockerfile

代码语言:javascript
复制
FROM php:7.3.0-fpm-alpine3.8

//...

RUN chown -R www-data:www-data /var/www/html
RUN chmod 755 -R /var/www/html && chmod -R o+w storage/

USER www-data

RUN composer install
RUN composer dump-autoload
COPY .env.example .env
// I need to migrate here when DB container will be ready
EN

回答 1

Stack Overflow用户

发布于 2019-05-29 03:43:39

Dockerfile不是数据库迁移操作的好选择。镜像应该能够独立于其他容器构建自身。

数据库迁移更适合作为引导时操作,而不是构建时操作。一个很好的地方应该是image的入口点脚本,或者在启动docker堆栈时作为一个单独的"init“任务--这取决于您觉得更舒服的是什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56345838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档