Nginx,WordPress和SQL
我现在正在学习如何使用docker,并想知道是否有一种方法来制作一个包含Wordpress,SQL和Nginx的Docker堆栈。
现在我想要有3个容器运行,每个1个,并使用nginx作为我的wordpress应用程序的反向代理。
然而,每次我试图通过一个作曲文件来获得这个堆栈,只有Wordpress和SQL被链接,而不是Nginx。
version: '2' services: db: image: mysql:5.7 volumes: - "./.data/db:/var/lib/mysql" restart: always environment: MYSQL_ROOT_PASSWORD: wordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:fpm links: - db ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_PASSWORD: wordpress nginx: restart: always image: nginx ports: - "80:80"
这是我在我的docker-compose.yml中所有的
你的基本方法应该工作。 我有一个感觉是有configuration问题的地方,可能与nginx,阻止它的工作,你打算。
你可以尝试使用这个类似的docker-compose.yml文件作为示例,看看它可能与你正在做的不同:
docker-compose.yml
version: '2' services: php: image: phpmyadmin/phpmyadmin links: - mysql:db depends_on: - mysql mysql: image: k0st/alpine-mariadb volumes: - ./data/mysql:/var/lib/mysql environment: - MYSQL_DATABASE=mydb - MYSQL_USER=myuser - MYSQL_PASSWORD=mypass nginx: image: nginx:stable-alpine ports: - "81:80" volumes: - ./nginx/log:/var/log/nginx - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro - ./nginx/files:/var/www/nginx:ro depends_on: - php
nginx/nginx.conf
worker_processes 1; events { worker_connections 1024; } http { sendfile off; server { listen 80; location / { proxy_pass http://php; proxy_set_header Host $host; proxy_redirect off; } } }
nginx的configuration是简化的,但应该为testing工作 – 基本上它所做的是代理的PHP应用程序。 映射到端口81以避免主机发生冲突。 (请注意,这只是一个粗略的演示,需要更多的使用。)
关于链接,你可以看到,如果你运行: docker-compose exec mysql ping -c2 nginx
从mysql容器ping到nginx容器,即使这些容器之间没有指定链接,你也会成功。 Docker Compose会将这些链接保留在默认networking中。
如果你愿意的话,你可以从这个仓库中取得一个工作版本,然后运行docker-compose up
,(假设你没有任何东西在端口81上运行)在http:// localhost:81 /上查看结果相应的主机名/ IP是)。
有关Docker撰写networking的更多信息,请参阅: https : //docs.docker.com/compose/networking/
默认情况下,Compose会为您的应用程序设置一个networking。 服务的每个容器都join默认networking,并且该networking上的其他容器都可以访问它们,并且可以通过与容器名称相同的主机名来发现它们。
链接允许您定义额外的别名,通过这些别名可以从另一个服务访问服务。 他们不需要启用服务进行通信 – 默认情况下,任何服务都可以以该服务的名称到达任何其他服务。
你可以使用jwilder-nginx的docker镜像。 它使用docker-gen来检测容器,并将它们注册到nginx.conf中。
这应该工作,如果添加“VIRTUAL_HOST”该域将被添加到nginx.conf。 请注意:您不必使用此安装程序公开WordPress上的端口。 jwilder-nginx将使用默认端口转发stream量。
version: '2' services: db: image: mysql:5.7 volumes: - "./.data/db:/var/lib/mysql" restart: always environment: MYSQL_ROOT_PASSWORD: wordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:fpm links: - db - nginx restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_PASSWORD: wordpress VIRTUAL_HOST: myblog.mydomain.de nginx: restart: always image: jwilder/nginx-proxy ports: - "80:80"
- 该容器应该运行一个Web服务器,该服务器在主机系统上(不在Docker容器内部)从/ var / www / website上提供静态页面,
- 在Ubuntu 16.04上安装conductr-cli时出错
- Docker映像标记不起作用
- 使用docker-py与'docker exec -it bash <container_id>'进行双向通信
- 如何创build一个MongoDB泊坞窗并保存数据库的configuration?
- 删除/usr/local/lib/python3.5中的test /和config-3.5m /目录
- jhipster-docker:spring-boot不会以控件C结束
- Docker-compose ssh代理转发
- 我怎样才能让phpmyadmin持续更长时间没有与Docker超时