我已经成功地用docker容器化了我的基本Yii2应用程序,它运行在localhost:8000
上。然而,我不能有效地使用这个应用程序,因为它的大部分数据都存储在迁移文件中。是否有一种方法,我可以导出迁移到docker运行后?(或在执行过程中)
这是我的docker撰写文件
version: '2'
services:
php:
image: yiisoftware/yii2-php:7.1-apache
volumes:
- ~/.composer-docker/cache:/root/.composer/cache:delegated
- ./:/app:delegated
ports:
- '8000:80'
networks:
- my-network
db:
image: mysql:5.7
restart: always
environment:
- MYSQL_DATABASE=my-db
- MYSQL_PASSWORD=password
- MYSQL_ROOT_PASSWORD=password
ports:
- '3306:3306'
expose:
- '3306'
volumes:
- mydb:/var/lib/mysql
networks:
- my-network
memcached:
container_name: memcached
image: memcached:latest
ports:
- "0.0.0.0:11211:11211"
volumes:
restatdb:
networks:
my-network:
driver: bridge
和我的Dockerfile
FROM alpine:3.4
ADD . /
COPY ./config/web.php ./config/web.php
COPY . /var/www/html
# Let docker create a volume for the session dir.
# This keeps the session files even if the container is rebuilt.
VOLUME /var/www/html/var/sessions
可以在docker中运行yii命令。首先让yii2容器在后台或终端的另一个选项卡中运行。yii命令可以在交互界面上使用docker exec
运行,这将允许我们与正在运行的容器
进行交互。sudo docker exec -i <container-ID> php yii migrate/up
您可以使用
获取容器IDsudo docker ps