Я пытаюсь создать легко развертываемый Docker-контейнер (или набор контейнеров), который позволит мне и другим разработчикам локально кодировать в среде, соответствующей среде нашего сервера.
Мне удалосьРазвертывание контейнера с соответствующими версиями OS и PHP, содержащего том, который в настоящее время содержит проект Laravel. Он правильно вытягивает код, отражая изменения, внесенные во внешнюю кодовую базу.
Я также генерирую контейнер nginx (хотя в идеале я хотел бы перенести это в один контейнер в будущем). Это представляет "Добро пожаловать в nginx!"сообщение, когда я перехожу на http://localhost:8080/.
Однако мои знания nginx абсолютно минимальны и недостаточны для обслуживания проекта Laravel в другом моем контейнере. Это может быть доступно, и я просто не знаю о правильной маршрутизации, но я думаю, что исключил это.
Мне не приходилось задавать много вопросов раньше, так как я почти всегда могопределите ответ с помощью ресурсов, но это новая область ответственности для меня, пожалуйста, извините, если проблема очевидна или элементарна.
Мой оригинальный пример был построен на образе докера php:7.1.8-apache
и прекрасно служил,но он использует другую ОС, соответствующую моим требованиям, а также неправильную версию PHP.
Я попытался объединить изображения, надеясь, что слои будут ответом на мою проблему, но последующие слои перезаписали ОС моего исходного слоя,Я не уверен, могу ли я накапливать слои более дискретно.
Так что теперь я нахожусь в точке, где я использую образ ОС в качестве основы, а затем применяю команды yum для установки PHP. Внутри контейнера идеальны версии для ОС и PHP, а код присутствует.
Мне кажется, что я почти на месте, но я просто не могу узнать, как получить доступ к универсальному проекту Laravel в моем браузере и протестироватькод изменяется по мере их применения.
Обновление Я обновил файлы, чтобы соответствовать приведенному ниже ответу, а также исправил обнаруженную проблему;Файл default.conf копировался в основной докер, а не в nginx. Объединяя это исправление с приведенным ниже ответом, я получаю ошибку 502 Bad Gateway, когда я перехожу к http://localhost:8080/.
index.php Laravel находится в \ public, я попытался обновитьСсылка на индекс в default.conf, чтобы соответствовать этому, но без удачи.
В приложении докера указана следующая ошибка при попытке загрузить http://localhost:8080/ вместо экрана приветствия nginx: [ошибка] 6 # 6: * 24 connect () не удалось (111: соединение отказано) при подключении к восходящему каналу, клиент: 172.22.0.1, сервер:, запрос: «GET / HTTP / 1.1», восходящий поток: «http://172.22.0.2:80/", хост:« localhost: 8080 »
Ни доступ.log, ни error.log не регистрируют какие-либо подробности при обращении к адресу.
docker-composer.yml
version: '3'
services:
app:
build:
context: .
dockerfile: .docker/primary/Dockerfile
image: base-docker
container_name: primarydocker
# ports:
# - 8080:80
volumes:
- .:/srv/jumbledown
restart: unless-stopped
tty: true
networks:
- draft-network
webserver:
build:
context: .
dockerfile: .docker/nginx/Dockerfile
container_name: webserver
ports:
- "8080:80"
- "443:443"
links:
- app
networks:
- draft-network
restart: unless-stopped
tty: true
#Docker Networks
networks:
draft-network:
driver: bridge
Dockerfile
FROM centos:7
RUN yum -y install epel-release yum-utils \
&& yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm \
&& yum-config-manager --enable remi-php71 \
&& yum -y install php php-common php-opcache php-mcrypt php-cli php-gd php-curl php-mysql
# && chown -R www-data:www-data /srv/jumbledown
COPY . /srv/jumbledown
# RUN docker-php-ext-install mbstring pdo pdo_mysql \
# && chown -R www-data:www-data /srv/jumbledown
Dockerfile для nginx
FROM nginx:1.12
# ADD ./.docker/site.conf /etc/nginx/conf.d/
ADD ./.docker/nginx/default.conf /etc/nginx/conf.d/
default.conf
upstream appUpstream {
server app;
}
server {
listen 80;
index index.php
server_name jumbledown.com www.jumbledown.com;
client_max_body_size 30M;
location / {
proxy_pass http://appUpstream/;
proxy_redirect off;
proxy_buffering off;
proxy_request_buffering off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
В идеале я хотел бы иметь возможность запустить docker-compose up --build
, а затем ввести URL-адрес в браузере и увидеть всплывающую главную страницу Laravel. .