And*_*arz 5 php mysql nginx symfony docker
这个帖子会很长,所以请确保你附近有东西可以喝.
基本上,我想使用Docker制作一个Nginx容器,一个PHP-FPM容器,一个MySQL容器和一个Symfony容器,它将包含我的Symfony应用程序的代码.
我一直在尝试让事情工作一整周,阅读了很多东西,但遗憾的是没有任何效果.
我制作了一个docker-compose.yml,它将Dockerfiles用于Nginx,PHP-FPM和Symfony.MySQL基于Dockerhub上托管的映像.
我安装了所有东西,最后,经过一周的工作,我仍然遇到两种类型的错误:
Nginx随机给我"502 Bad Getaway".这主要是因为端口错误,好像我的nginx fastcgi_pass参数没有设置为正确的值,但它是,所以我不太明白这个问题.
然后,Symfony给了我一个"找不到GET /的路线",但我不明白为什么,因为该网站实际上是在制作和我的同事.我对数据库持怀疑态度,因为当数据库为空时它可能会给我这个错误.所以我从数据库中获取了一个转储,但它没有给出任何结论.
这是您可能想要的文件
泊坞窗,compose.yml
version:'2'
services:
symfony:
build: symfony/
volumes:
- ./symfony/code/:/var/www:rw
- ./symfony/code/app/logs/symfony:/var/www/project/app/logs/symfony:rw
- ./symfony/code/app/logs/nginx:/var/www/project/app/logs/nginx:rw
nginx:
build: nginx/
ports:
- 8080:80
links:
- fpm
volumes_from:
- symfony
environment:
<APP_SERVER_NAME>: dev-machine
fpm:
build: php-fpm/
links:
- mysql
volumes_from:
- symfony
environment:
APP_SERVER_NAME: dev-machine
mysql:
image: mysql
ports:
- 3306:3306
volumes:
- ./.data/db:/var/lib/mysql:rw
environment:
- "MYSQL_ROOT_PASSWORD=root"
- "MYSQL_USER=root"
- "MYSQL_PASSWORD=root"
- "MYSQL_DATABASE=databaseName"
Run Code Online (Sandbox Code Playgroud)Nginx Dockerfile
FROM ubuntu:14.04
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y \
nginx
ADD nginx.conf /etc/nginx/nginx.conf
ADD vhost.conf /etc/nginx/sites-enabled/default
ADD start.sh /start.sh
EXPOSE 80
ENTRYPOINT ["/start.sh"]
Run Code Online (Sandbox Code Playgroud)我的nginx.conf文件有这个
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
Run Code Online (Sandbox Code Playgroud)vhost.conf
server {
listen 80;
server_name project.dev;
access_log /var/log/nginx/symfony-access.log;
error_log /var/log/nginx/symfony-error.log;
#server_name dev-machine;
#access_log /dev/stdout;
#error_log /dev/stdout info;
root /var/www/web;
index app_dev.php;
location / {
try_files $uri $uri/ /app_dev.php?$query_string;
}
location ~ ^/(app|app_dev)\.php(/|$) {
fastcgi_pass fpm:9000;
include fastcgi_params;
fastcgi_param HTTPS off;
try_files $uri =404;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_index app_dev.php;
}
}
Run Code Online (Sandbox Code Playgroud)PHP-FPM Dockerfile
FROM ubuntu:14.04
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y \
git \
nano \
curl \
php5-cli \
php5-fpm \
php5-json \
php5-intl \
php5-gd \
php5-mysql
# Set timezone
RUN rm /etc/localtime
RUN ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime
RUN "date"
# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN composer --version
ADD start.sh /start.sh
ADD symfony_environment.sh /etc/profile.d/symfony_environment.sh
EXPOSE 9000
WORKDIR /var/www
ENTRYPOINT ["/start.sh"]
Run Code Online (Sandbox Code Playgroud)Symfony Dockerfile
FROM ubuntu:14.04
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y \
git \
curl \
php5-cli \
php5-json \
php5-intl \
php5-gd
RUN curl -sS https://getcomposer.org/installer | php
RUN mv composer.phar /usr/local/bin/composer
ADD entrypoint.sh /entrypoint.sh
ADD ./code /var/www
ADD symfony_environment.sh /etc/profile.d/symfony_environment.sh
WORKDIR /var/www
ENTRYPOINT ["/entrypoint.sh"]
CMD ["echo", "hello"]
Run Code Online (Sandbox Code Playgroud)我在数据库中加载了转储,parameters.yml如下所示:
database_driver: pdo_mysql
database_host: mysql
database_port: 3306
database_name: <databaseName>
database_user: root
database_password: root
Run Code Online (Sandbox Code Playgroud)
我真的不知道该怎么做,欢迎任何线索,我认为这将有助于将来很多人.