[英]How should I set up a development environment with Docker for WordPress themes?
[英]How do I set up docker and nginx for local development
我正在嘗試建立一個本地開發環境,但我正在努力讓它工作。 我希望 docker 和 docker compose 將 nginx 作為反向代理和 postgresql 數據庫運行
項目結構
my-app/
├─ server/ (fastify node server)
├─ client/ (sveltekit dev server)
├─ nginx/
│ ├─ Dockerfile
│ ├─ default.conf
├─ docker-compose.yml
我希望唯一的先決條件是 Node、git 和 docker。 我要能夠克隆項目,啟動docker compose,然后分別啟動兩個項目
我已經通讀了 nginx 初學者指南和幾篇 nginx 文檔,但我發現他們的文檔相當難以理解。 我還發現了一些指南,它們讓我的客戶端和服務器在 docker 容器中運行,並在 docker compose 中設置為單獨的服務。 這不是最終目標,但不幸的是,我也沒有讓它們發揮作用。
這個問題似乎很接近,我發現它很有幫助。 但它仍然無法正常工作。
首先,我只是想讓一切都在 http://localhost:4000 上工作,以消除一些復雜性
這是我迄今為止最好的嘗試:
##########################
# docker-compose.yml
##########################
version: '3.9'
services:
reverse-proxy:
build: ./nginx
ports:
- 8080:8080
##########################
# nginx/Dockerfile
##########################
FROM nginx:1.21.3
COPY ./default.conf /etc/nginx/conf.d/default.conf/
##########################
# nginx/default.conf
##########################
server {
listen 8080;
location / {
proxy_pass http://host.docker.internal:8080;
}
location /api/ {
proxy_pass http://host.docker.internal:3000;
}
}
通過此設置,我可以點擊 http://localhost:3000/api/ 並從服務器獲取我的 json 響應,但是當我嘗試點擊 http://localhost:8080/api/ 時,我得到了標准的 nginx 502響應和 nginx 沒有成功到達我的節點服務器。 nginx 日志給了我這個錯誤:
2021/11/16 12:38:39 [error] 34#34: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.19.0.1, server: , request: "GET /api/ HTTP/1.1", upstream: "http://192.168.65.2:3000/api/", host: "localhost:8080"
我不知道上面的 IP 地址從哪里來,但是如果我在本地點擊http://192.168.65.2:3000/api/ ,那么瀏覽器就會不停地旋轉。
我正在尋找一個正確配置docker-compose.yml
和一個映射到默認值的單個、相對簡單的 nginx 文件。 HTTPS 和自定義 URL 確實是后來的問題。 現在,我只想能夠在 docker 容器中訪問我的 nginx 反向代理,並正確路由到我的兩個本地運行的節點服務器(一個是 API 服務器,一個是 sveltekit 開發服務器 - 都不在 docker 容器內)。
預先感謝您的任何幫助!
您必須牢記以下幾點:
docker-compose.yml
使用它。 並將您的配置文件掛載到容器中。我使用 nginx、docker 和 docker-compose 的示例存儲庫: https : //gitlab.com/datails/api 。
示例default.conf
:
upstream api_server {
server api:3000;
}
upstream frontend {
server frontend:3000;
}
server {
listen 80;
location /api {
proxy_pass http://api_server;
}
location / {
proxy_pass http://frontend/;
}
}
示例docker-compose.yml
version: '3.8'
services:
nginx:
image: nginx:1.19.4
depends_on:
- server
- frontend
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
ports:
- '8080:80'
然后確保您的前端 dockerized 並在您的 docker-compose 中將frontend
稱為服務,例如:
version: '3.8'
services:
nginx:
image: nginx:1.19.4
depends_on:
- server
- frontend
volumes:
- ./default.conf:/etc/nginx/conf.d/default.conf
ports:
- '8080:80'
frontend:
build: ./frontend
command: npm run start
volumes:
- ./frontend/src:/home/usr/app/src
api:
build: ./api
command: npm run start
volumes:
- ./api/src:/home/usr/app/src
請注意,您不需要端口,因為您使用容器間通信。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.