6 docker docker-compose vscode-remote vscode-devcontainer
我希望在开发容器中运行一个应用程序、数据库和 Redis 服务,这样我就能够在容器、应用程序和 Windows 上访问我的数据库和 Redis,这就是当前我想要的应用程序的工作方式和数据库:
.devcontainer.json:
{
"name": "Node.js, TypeScript, PostgreSQL & Redis",
"dockerComposeFile": "docker-compose.yml",
"service": "akira",
"workspaceFolder": "/workspace",
"settings": {
"typescript.tsdk": "node_modules/typescript/lib",
"sqltools.connections": [
{
"name": "Container database",
"driver": "PostgreSQL",
"previewLimit": 50,
"server": "database",
"port": 5432,
"database": "akira",
"username": "ailuropoda",
"password": "melanoleuca"
}
],
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll": true
}
},
"extensions": [
"aaron-bond.better-comments",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"mtxr.sqltools",
"mtxr.sqltools-driver-pg",
"redhat.vscode-yaml"
],
"forwardPorts": [5432],
"postCreateCommand": "npm install",
"remoteUser": "node"
}
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml:
version: "3.8"
services:
akira:
build:
context: .
dockerfile: Dockerfile
command: sleep infinity
env_file: .env
volumes:
- ..:/workspace:cached
database:
image: postgres:latest
restart: unless-stopped
environment:
POSTGRES_USER: ailuropoda
POSTGRES_DB: akira
POSTGRES_PASSWORD: melanoleuca
ports:
- 5432:5432
volumes:
- pgdata:/var/lib/postgresql/data
redis:
image: redis:alpine
tty: true
ports:
- 6379:6379
volumes:
pgdata:
Run Code Online (Sandbox Code Playgroud)
Dockerfile:
ARG VARIANT="16-bullseye"
FROM mcr.microsoft.com/vscode/devcontainers/typescript-node:0-${VARIANT}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我已经尝试实现我想要使用的目标,networks但没有成功,我的问题是:如何将 Redis 添加到我的服务中,同时仍然能够在应用程序内和 Windows 上连接 Redis 和数据库?
如果您在 WSL 上使用 Docker,我发现当进程正在侦听 ::1 时,我经常无法连接,但当显式地将端口绑定到 127.0.0.1 时,可以通过 Windows 访问该服务。
所以像
ports:
- 127.0.0.1:5432:5432
Run Code Online (Sandbox Code Playgroud)
可能有用
| 归档时间: |
|
| 查看次数: |
3663 次 |
| 最近记录: |