我正在将laravel应用程序放入群集集群,这是所有相关文件
Dockerfile来构建laravel应用
FROM composer:1.7 as php-builder
COPY database /database
COPY composer.json composer.json
COPY composer.lock composer.lock
RUN composer install \
--ignore-platform-reqs \
--no-interaction \
--no-plugins \
--no-scripts \
--no-dev \
--optimize-autoloader \
--prefer-dist
FROM node:11-alpine as frontend-builder
RUN mkdir -p /app/public
COPY package.json webpack.mix.js /app/
COPY resources/assets/ /app/resources/assets/
WORKDIR /app
RUN npm install && npm run production
FROM php:7.2-cli-alpine
COPY . /opt/sabay_quiz
COPY --from=php-builder /app/vendor/ /opt/sabay_quiz/vendor
COPY --from=frontend-builder /app/public/js/ /opt/sabay_quiz/public/js
COPY --from=frontend-builder /app/public/css/ /opt/sabay_quiz/public/css
COPY --from=frontend-builder /app/mix-manifest.json /opt/sabay_quiz/mix-manifest.json
RUN apk update --no-cache && \
apk upgrade --no-cache && \
apk add --no-cache postgresql-dev && \
docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql && \
docker-php-ext-install pdo pdo_pgsql pgsql && \
chown -R root:www-data /opt/sabay_quiz && \
find /opt/sabay_quiz -type f -exec chmod 664 {} + && \
find /opt/sabay_quiz -type d -exec chmod 775 {} + && \
chgrp -R www-data /opt/sabay_quiz/storage /opt/sabay_quiz/bootstrap/cache && \
chmod -R ug+rwx /opt/sabay_quiz/storage /opt/sabay_quiz/bootstrap/cache
CMD ["tail", "-f", "/dev/null"]
php-fpm
的Dockerfile
FROM php:7.2-fpm-alpine
EXPOSE 9000
CMD ["php-fpm", "--nodaemonize"]
Docker堆栈文件
version: '3.7'
services:
app:
image: laravel_app:latest
networks:
- weavenet
- pg_connect
deploy:
replicas: 1
volumes:
- laravel_file:/opt/app
depends_on:
- postgres_master
env_file:
- .env.prod
postgres_master:
image: postgres:11-alpine
networks:
- weavenet
- pg_connect
deploy:
replicas: 1
volumes:
- pg_data:/var/lib/postgresql/data
env_file:
- .env.prod.postgres
php_fpm:
image: my/php_fpm
deploy:
replicas: 3
volumes:
- ./php_fpm.www.conf:/usr/local/etc/php-fpm.d/www.conf:ro
- laravel_file:/opt/app
networks:
- weavenet
- ingress
proxy:
image: nginx:1.15-alpine
depends_on:
- php_fpm
- app
networks:
- ingress
ports:
- 80:80
- 443:443
volumes:
- laravel_file:/opt/app:ro
- ./nginx.conf:/etc/nginx/conf.d/default.conf
networks:
weavenet:
external: true
ingress:
pg_connect:
driver: overlay
volumes:
laravel_file:
driver: local
pg_data:
driver: local
.env.prod
文件
# NOTE: I only shows the .env.prod file because I am pretty sure I
# properly setup on the postgres master node side also because
# the migration I ran from within the app container works and
# I also check the table and seed data does present in the
# postgres master node data
# and inside the .env.prod.postgres only have 3 env vars, those are
# db name, db user and db password
APP_NAME="APP"
...
DB_CONNECTION=pgsql
DB_HOST=postgres_master
DB_PORT=5432
DB_DATABASE=app
DB_USERNAME=user
DB_PASSWORD=user
...
我可以部署堆栈,并且一切都以预期的方式进行设置。将所有容器旋转起来之后。我可以执行到app
容器中并成功运行迁移,也可以执行到postgres_master
容器中,并查看所有表和种子数据。
问题出在我进入0.0.0.0
时,它显示了预期的登录屏幕。但是,当我输入凭据并按Enter键登录时,它向我显示此错误:
注意:堆栈文件不是完美的,并且尚未完成。我计划首先使一切正常,然后在生产使用之前对其进行改进。