这篇文章会很长,所以一定要在你身边喝点东西。
基本上,我想使用Docker来创build一个Nginx容器,一个PHP-FPM容器,一个MySQL容器和一个Symfony容器,它将包含我的Symfony应用程序的代码。
我一直在努力让事情工作一整个星期,一直在阅读这么多的东西,但不幸的是没有任何工作。
我做了一个docker-compose.yml,它使用Dockerfiles来处理Nginx,PHP-FPM和Symfony。 MySQL基于托pipe在Dockerhub上的映像。
我安装了所有东西,最后,经过一周的工作,我仍然遇到两种types的错误:
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"
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"]
我的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;
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; } }
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"]
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"]
我加载数据库中的转储和parameters.yml
是这样的:
database_driver: pdo_mysql database_host: mysql database_port: 3306 database_name: <databaseName> database_user: root database_password: root
我真的不知道该怎么做,欢迎任何线索,我想这对未来的很多人会有帮助。