ฉันใช้ docker-compose กับ nginx reverse proxy เพื่อรันบนเซิร์ฟเวอร์ด้วยเส้นทางที่แตกต่างกัน:
- server_ip/แบ็กเอนด์
- server_ip /ส่วนหน้า
ควรทำงานบนพอร์ต 80
ฉันกำลังทดสอบด้วย docker-compose โดยใช้ nginx เป็นชื่อเว็บคอนเทนเนอร์และ phpmyadmin เป็นชื่อคอนเทนเนอร์ myadmin (mysql):
บริการ:
เว็บ:
ภาพ: nginx:alpine
เครือข่าย:
เครือข่ายนักเทียบท่า:
นามแฝง:
- ชื่อส่วนหน้า
container_name: เว็บ
ปริมาณ:
- "./etc/nginx/default.conf:/etc/nginx/conf.d/default.conf"
- "./etc/ssl:/etc/ssl"
- "./web:/var/www/html"
- "./etc/nginx/default.template.conf:/etc/nginx/conf.d/default.template"
พอร์ต:
- "${HTTP_PORT}:80"
- "${HTTPS_PORT}:443"
สิ่งแวดล้อม:
- NGINX_HOST=${NGINX_HOST}
#- VIRTUAL_HOST= a.com
คำสั่ง: /bin/sh -c "envsubst '$$NGINX_HOST' < /etc/nginx/conf.d/default.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;' "
รีสตาร์ท: เสมอ
ขึ้นอยู่กับ:
- php
- mysqldb
php:
ภาพ: nanoninja/php-fpm:latest
เครือข่าย:
เครือข่ายนักเทียบท่า:
นามแฝง:
- php-ชื่อ
ชื่อคอนเทนเนอร์: php-fpm
รีสตาร์ท: เสมอ
ปริมาณ:
- "./etc/php/php.ini:/usr/local/etc/php/conf.d/php.ini"
- "./web:/var/www/html"
ผู้ดูแลระบบของฉัน:
ภาพ: phpmyadmin/phpmyadmin
เครือข่าย:
เครือข่ายนักเทียบท่า:
นามแฝง:
- แบ็กเอนด์ชื่อ
container_name: ผู้ดูแลระบบของฉัน
พอร์ต:
- "${PHPMYADMIN_PORT}:80"
สิ่งแวดล้อม:
- PMA_ARBITRARY=1
- PMA_HOST=${MYSQL_HOST}
# - PMA_ABSOLUTE_URI: https://localhost/pma/
รีสตาร์ท: เสมอ
ขึ้นอยู่กับ:
- mysqldb
mysqldb:
สร้าง:
บริบท: .
dockerfile: dockerfile-mariadb
หาเรื่อง:
MARIADB_VERSION: ${MARIADB_VERSION}
เครือข่าย:
เครือข่ายนักเทียบท่า:
นามแฝง:
- ชื่อ mysql
ชื่อคอนเทนเนอร์: ${MYSQL_HOST}
รีสตาร์ท: เสมอ
env_file:
- ".env"
สิ่งแวดล้อม:
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
พอร์ต:
- "127.0.0.1:${MYSQL_PORT}:3306"
ปริมาณ:
- "./mysql-bbdd:/var/lib/mysql"
เครือข่าย:
เครือข่ายนักเทียบท่า:
# คนขับ: สะพาน
ใช้ไฟล์ nginx default.conf เพื่อทำ reverse proxy:
เซิร์ฟเวอร์ {
ฟัง 80 default_server;
ฟัง [::]:80 default_server;
server_name localhost;
ดัชนี index.php index.html;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
รูท /var/www/html/public;
ตำแหน่ง ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
รวม fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
ที่ตั้ง / {
proxy_pass http://เว็บ;
}
ที่ตั้ง /api {
proxy_pass http://myadmin:8080/;
}
สถานที่ = /404.html {
ภายใน;
}
}
แต่มันใช้ไม่ได้สำหรับฉันเมื่อฉันใส่ IP ของเซิร์ฟเวอร์ด้วยเส้นทาง ฉันไม่รู้ว่าต้องทำอย่างไร