У меня установлен и работает контейнер nginx (см. Рисунок ниже), но настроенный порт (8585) не отображается, в результате соответствующий проект symfony 4 не выполняется через localhost:8585
![enter image description here](https://i.stack.imgur.com/m6idG.png)
Вот nginx конфигурация в docker - composer .yml файле:
version: "3.6"
services:
#Core configuration
php-fpm:
container_name: ${CONTAINER_NAME}_php-fpm
build:
context: .
target: base
ports:
- '${PHP_PORT}:9000'
volumes:
- './:${WORKPATH}:rw'
- './docker/php/conf/dev/php.ini:/usr/local/etc/php/php.ini'
#- './docker/php/conf/dev/php.ini:/usr/local/etc/php/php.ini'
env_file:
- .env
restart: always
nginx:
container_name: ${CONTAINER_NAME}_nginx
image: nginx
ports:
- '${NGINX_PORT}:80'
volumes:
- './:${WORKPATH}:rw'
- './docker/nginx/logs:/var/log/nginx'
- './docker/nginx/conf/dev/api022020.conf:/etc/nginx/conf.d/default.conf'
#- './docker/nginx/conf/dev/api022020.conf:/etc/nginx/conf.d/default.conf'
- './docker/nginx/conf/core/nginx.conf:/etc/nginx/nginx.conf'
links:
- php-fpm
env_file:
- .env
expose:
- 80
restart: always
# Frontend configuration
node:
container_name: ${CONTAINER_NAME}_node
build: './docker/nodejs'
ports:
- '${NODE_PORT}:3000'
entrypoint: "yarn watch"
volumes:
- './:/usr/src/app:rw'
restart: always
#DB configuration
# For dev environment coding
mysql:
container_name: ${CONTAINER_NAME}_mysql
image: mysql:5.7
ports:
- '${MYSQL_PORT}:3306'
environment:
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
volumes:
- 'mysql:/var/lib/mysql'
restart: always
#For prod environment emulation
postgresql:
container_name: ${CONTAINER_NAME}_pgsql
image: postgres:9.6-alpine
environment:
PGSQL_DATABASE: ${PGSQL_DATABASE}
PGSQL_USER: ${PGSQL_USER}
PGSQL_PASSWORD: ${PGSQL_PASSWORD}
ports:
- '${PGSQL_PORT}:5432'
volumes:
- 'db-data:/var/lib/postgresql/data:rw'
restart: always
#Server optimization
redis:
container_name: ${CONTAINER_NAME}_redis
image: redis:alpine
ports:
- '${REDIS_PORT}:6379'
links:
- php-fpm
restart: always
volumes:
db-data: {}
mysql:
Пожалуйста, проверьте мой nginx .conf файл:
server {
listen 80 default_server; # Added this line
listen [::]80 default_server; # Added this line
#server_name my-project.dev;
root /var/www/api022020/public;
location / {
try_files $uri /index.php$is_args$args;
}
#Prod
location ~ ^/index\.php(/|$) {
fastcgi_pass php-fpm:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
internal;
}
location ~ \.php$ {
return 404;
}
error_log /var/log/nginx/api022020_prod_error.log;
access_log /var/log/nginx/api022020_prod_access.log;
}
.env файл:
# In all environments, the following files are loaded if they exist,
# the latter taking precedence over the former:
#
# * .env contains default values for the environment variables needed by the app
# * .env.local uncommitted file with local overrides
# * .env.$APP_ENV committed environment-specific defaults
# * .env.$APP_ENV.local uncommitted environment-specific overrides
#
# Real environment variables win over .env files.
#
# DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES.
#
# Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2).
# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration
###> symfony/framework-bundle ###
APP_ENV=dev
APP_SECRET=5f41c23b077589c815d289434ec7aeb4
#TRUSTED_PROXIES=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
#TRUSTED_HOSTS='^(localhost|example\.com)$'
###< symfony/framework-bundle ###
###> doctrine/doctrine-bundle ###
# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
# For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data.db"
# For a PostgreSQL database, use: #"postgresql://db_user:db_password@127.0.0.1:5432/db_name?serverVersion=11&charset=utf8"
# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
# DATABASE_URL=mysql://root:password@127.0.0.1:3306/db_name?serverVersion=5.7
###< doctrine/doctrine-bundle ###
## Docker
CONTAINER_NAME=api022020
WORKPATH=/var/www/api022020
PHP_PORT=9500
NGINX_PORT=8585
REDIS_PORT=8283
NODE_PORT=8382
MAILDEV_PORT=1080
APACHE_PORT=8189
## MySQL
MYSQL_PORT=3306
MYSQL_DATABASE=api022020
MYSQL_USER=api022020
MYSQL_PASSWORD=api022020
MYSQL_ROOT_PASSWORD=api022020
## POSTGRESQL
PGSQL_PORT=5342
PGSQL_DATABASE=api022020
PGSQL_USER=api022020
PGSQL_PASSWORD=api022020
ОБНОВЛЕНИЕ:
Dockerfile:
FROM php:fpm-alpine as base
ENV WORKPATH "/var/www/api022020"
ENV COMPOSER_ALLOW_SUPERUSER 1
RUN apk add --no-cache --virtual .build-deps $PHPIZE_DEPS icu-dev postgresql-dev libzip-dev gnupg graphviz make autoconf git zlib-dev curl chromium go \
&& docker-php-ext-configure pgsql --with-pgsql=/usr/local/pgsql \
&& docker-php-ext-install zip intl pdo_pgsql pdo_mysql opcache json pgsql mysqli \
&& pecl install apcu redis \
&& docker-php-ext-enable apcu mysqli redis
#Custom php configuration
COPY ./docker/php/conf/dev/php.ini /usr/local/etc/php/php.ini
#Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
RUN wget https://cs.symfony.com/download/php-cs-fixer-v2.phar -o php-cs-fixer \
&& chmod a+x php-cs-fixer \
&& mv php-cs-fixer /usr/local/bin/php-cs-fixer \
&& curl --insecure -LS https://get.sensiolabs.de/deptrac.phar -o deptrac.phar \
&& chmod a+x deptrac.phar \
&& mv deptrac.phar /usr/local/bin/deptrac
RUN mkdir -p ${WORKPATH}
RUN rm -rf ${WORKPATH}/vendor \
&& ls -l ${WORKPATH}
RUN mkdir -p ${WORKPATH}/var \
&& mkdir ${WORKPATH}/var/cache \
&& mkdir ${WORKPATH}/var/logs \
&& mkdir ${WORKPATH}/var/sessions \
&& chown -R www-data ${WORKPATH}/var \
&& chown -R www-data /tmp
RUN chown www-data:www-data -R ${WORKPATH}
WORKDIR ${WORKPATH}
COPY . ./
EXPOSE 9000
CMD ["php-fpm"]
#Production environment
FROM base
COPY ./docker/php/conf/prod/php.ini /usr/local/etc/php/php.ini
ОБНОВЛЕНИЕ 2
patrick@patrick-VirtualBox:/var/www/api022020$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0241c049f90c redis:alpine "docker-entrypoint.s…" 22 minutes ago Up 22 minutes 0.0.0.0:8283->6379/tcp api022020_redis
a58155e52d7f nginx "nginx -g 'daemon of…" 22 minutes ago Up 5 minutes 0.0.0.0:8585->80/tcp api022020_nginx
3aab21fb15aa postgres:9.6-alpine "docker-entrypoint.s…" 22 minutes ago Restarting (1) 46 seconds ago api022020_pgsql
0cf51b9359a8 api022020_node "yarn watch" 22 minutes ago Restarting (1) 42 seconds ago api022020_node
087648a69e68 8ee96c1a7995 "docker-php-entrypoi…" 22 minutes ago Up 22 minutes 0.0.0.0:9500->9000/tcp api022020_php-fpm
7de9e9a59252 mysql:5.7 "docker-entrypoint.s…" 22 minutes ago Up 22 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp api022020_mysql
При попытке доступа localhost:8585
, кажется, не работает:
This site can’t be reachedThe webpage at http://localhost:8585/ might be temporarily down or it may have moved permanently to a new web address.
ERR_SOCKET_NOT_CONNECTED
ОБНОВЛЕНИЕ 3
Получение Bad Request
ошибка при замене nginx изображения на apache изображение следующим образом:
Bad Request
Your browser sent a request that this server could not understand.
Apache/2.4.7 (Ubuntu) Server at localhost Port 8189
Apache конфигурация контейнера:
# Apache
apache:
container_name: ${CONTAINER_NAME}_apache
image: tutum/apache-php
ports:
- "${APACHE_PORT}:80"
volumes:
- '${WORKPATH}:/var/www'
- './docker/php/conf/dev/php.ini:/etc/php5/apache2/conf.d/30-custom.ini'
- './docker/apache/sites:/etc/apache2/sites-enabled'
environment:
- "ALLOW_OVERRIDE=true"
links:
- "mysql:mysql"
- "maildev:maildev"
env_file:
- .env
restart: always
# Maildev
maildev:
image: djfarrelly/maildev
ports:
- "${MAILDEV_PORT}:80"
Любой подсказки, как решить эту проблему? Заранее спасибо