我尝试在ubuntu 18.04中使用docker运行yii2基本项目。这是我的docker-compose.yml:
<div *ngFor="let doc of documents; let last = last"> <!-- iterate over all documents, let last = last is optional -->
<p>Id: {{doc.id}}</p>
<!-- iterate over all names (n) for every document (doc) -->
<p>Names: <span *ngFor="let n of doc.names; last as lastName">{{n.name}}{{lastName ? '': ','}} </span></p>
<!-- iterate over all cities (c) for every document (doc) -->
<p>Cities: <span *ngFor="let c of doc.cities; last as lastCity">{{c.city}}{{lastCity ? '': ','}} </span></p>
<!-- optional , this will add a separator between documents-->
<hr *ngIf="!last"/>
</div>
这是config / db.php:
version: '2'
services:
php:
image: yiisoftware/yii2-php:7.1-apache
volumes:
- ~/projects/basic/.composer-docker/cache:/root/.composer/cache:delegated
- ./:/app:delegated
ports:
- 8000:80
links:
- mysql
mysql:
image: mysql:5.7
volumes:
- ~/projects/basic/.composer-docker/mysql:/var/lib/mysql
environment:
- "MYSQL_ROOT_PASSWORD=secret"
- "MYSQL_USER=app"
- "MYSQL_PASSWORD=secret"
- "MYSQL_DATABASE=app"
ports:
- '33061:3306'
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
restart: always
environment:
PMA_HOST: mysql
MYSQL_USERNAME: app
MYSQL_ROOT_PASSWORD: secret
ports:
- 8080:80
volumes:
- /sessions
links:
- 'mysql:mysql'
我使用与yii2 Advanced中相同的文件夹控制台/迁移。 当我运行命令./yii migration时,发生错误“异常'yii \ db \ Exception',消息为'SQLSTATE [HY000] [2002]连接被拒绝'”。在另一种情况下,当host = mysql时,出现错误“异常'yii \ db \ Exception',消息为'SQLSTATE [HY000] [2002] php_network_getaddresses:getaddrinfo失败:名称或服务未知”。 我做错了什么?
答案 0 :(得分:1)
在使用docker-compose时,将通过服务名称来引用您的主机。
因此您需要的是host=mysql
,而不是host=127.0.0.1
。
如果您运行docker-compose,则不同的服务就像不同的主机。您可以在php(服务名称)应用程序中运行Web应用程序,该应用程序将数据库服务连接到mysql(服务名称)应用程序