cos*_*ari 5 database-migration symfony docker dockerfile docker-compose
希望问题标题不要太混乱。
基本上我有一个基于 Docker 的 Symfony 3 应用程序。
我希望在 Docker 启动时运行应用程序的数据库迁移。基本上这样我就可以通过运行“docker-compose up”来启动应用程序并运行夹具数据。
但是,如果您的所有容器都来自图像呢?
我的应用程序将使用以下 docker-compose.yml 运行
version: '2'
services:
nginx:
image: nginx:latest
container_name: symfony_nginx
ports:
- "80:80"
volumes_from:
- php
volumes:
- ./etc/build/dev/nginx/conf.d:/etc/nginx/conf.d
- ./var/logs/nginx:/var/log/nginx
php:
image: letsbonus/php-dev:7.0
container_name: symfony_php
volumes:
- ./:/app
ports:
- "2222:22"
working_dir: /app
redis:
image: redis:3.0.7-alpine
container_name: symfony_redis
elk:
image: willdurand/elk
container_name: symfony_elk
ports:
- "81:80"
volumes:
- ./etc/build/dev/elk/logstash:/etc/logstash
- ./etc/build/dev/elk/logstash/patterns:/opt/logstash/patterns
volumes_from:
- php
database:
container_name: symfony_mysql
image: mysql
command: --general-log=/var/log/mysql/general.log
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=symfony
ports:
- 3306:3306
Run Code Online (Sandbox Code Playgroud)
但是然后需要我手动运行迁移。
由于我不知道该怎么做,我想我会向 docker-compose.yml 添加另一个容器定义
build:
context: .
dockerfile: Dockerfile.migrations
volumes_from:
- php
links:
- database
- php
depends_on:
- database
- php
Run Code Online (Sandbox Code Playgroud)
然而,自定义 dockerfile 开始长臂和腿,如下所示。
FROM ubuntu:16.04
RUN apt-get update
RUN apt-get install -y sudo
RUN apt-get install -y apt-transport-https
RUN apt-get install -y php7.0 php-xml php7.0-mysql
RUN apt-get install -y mysql-server-core-5.7 mysql-client-5.7
WORKDIR /app
COPY opt/deployment/development/run.sh /usr/bin
ENTRYPOINT [ "/usr/bin/run.sh" ]
Run Code Online (Sandbox Code Playgroud)
这一切似乎只是为了运行一个 shell 脚本,这让我觉得我错过了一些东西并且做错了。
关于实现这一目标的正确/最佳方法的任何想法?
| 归档时间: |
|
| 查看次数: |
961 次 |
| 最近记录: |