Dan*_*Dan 8 docker docker-compose visual-studio-code vscode-remote vscode-devcontainer
我似乎找不到明确的答案,我找到了/sf/answers/4820489271/但它不是很清楚,也可能已经过时,因为“dockerComposeFile”不再是有效的选项。
我有一个项目,其中包含一个现有的 docker-compose.yml 文件,该文件启动 MariaDB 数据库,我为 Node 添加了一个生成的 devcontainer.json 配置文件,如下所示
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
// https://github.com/microsoft/vscode-dev-containers/tree/v0.202.3/containers/javascript-node
{
"name": "Node.js",
"runArgs": ["--init"],
"build": {
"dockerfile": "Dockerfile",
// Update 'VARIANT' to pick a Node version: 16, 14, 12.
// Append -bullseye or -buster to pin to an OS version.
// Use -bullseye variants on local arm64/Apple Silicon.
"args": { "VARIANT": "12" }
},
// Set *default* container specific settings.json values on container create.
"settings": {},
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"dbaeumer.vscode-eslint"
],
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "yarn install",
// Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "node"
}
Run Code Online (Sandbox Code Playgroud)
它还生成了一个 Dockerfile
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.202.3/containers/javascript-node/.devcontainer/base.Dockerfile
# [Choice] Node.js version (use -bullseye variants on local arm64/Apple Silicon): 16, 14, 12, 16-bullseye, 14-bullseye, 12-bullseye, 16-buster, 14-buster, 12-buster
ARG VARIANT="16-bullseye"
FROM mcr.microsoft.com/vscode/devcontainers/javascript-node:0-${VARIANT}
# [Optional] Uncomment this section to install additional OS packages.
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
# && apt-get -y install --no-install-recommends <your-package-list-here>
# [Optional] Uncomment if you want to install an additional version of node using nvm
# ARG EXTRA_NODE_VERSION=10
# RUN su node -c "source /usr/local/share/nvm/nvm.sh && nvm install ${EXTRA_NODE_VERSION}"
# [Optional] Uncomment if you want to install more global node modules
# RUN su node -c "npm install -g <your-package-list-here>"
Run Code Online (Sandbox Code Playgroud)
这些文件位于我的 .devcontainer 文件夹中,现在位于我项目的 docker-compose.yml 文件中
version: '3.8'
services:
mariadb:
image: mariadb:10.1
env_file: .env
environment:
ports:
- 3306:3306
volumes:
- ./docker/mariadb.conf.d/:/etc/mysql/conf.d:z
- ./docker/mariadb-init/:/docker-entrypoint-initdb.d:z
Run Code Online (Sandbox Code Playgroud)
我想要实现的是能够启动这个 mariadb 实例,以便我的开发容器中的应用程序可以访问它,理想情况下我还可以通过我的操作系统访问数据库,我想使用现有的docker-compose.yml 文件,以便没有开发容器扩展的人可以手动运行 docker-compose up,我该如何实现这一点?
完整的工作示例(结合问题中提到的答案和其他SO):
.devcontainer/devcontainer.json:
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
// https://github.com/microsoft/vscode-dev-containers/tree/v0.217.4/containers/go
{
"name": "Go",
"service": "workspace",
"workspaceFolder": "/home/vscode/woskpaces/go-example/",
"dockerComposeFile": [
"docker-compose.yml",
"docker-compose.workspace.yml"
],
// Set *default* container specific settings.json values on container create.
"settings": {
"go.toolsManagement.checkForUpdates": "local",
"go.useLanguageServer": true,
"go.gopath": "/go",
"go.goroot": "/usr/local/go"
},
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"golang.go"
],
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "go version",
// Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "vscode"
}
Run Code Online (Sandbox Code Playgroud)
.devcontainer/docker-compose.workspace.yml:
version: '3'
networks:
myNetwork:
name: myNetwork
services:
workspace:
build:
context: ./
dockerfile: Dockerfile
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ..:/home/vscode/woskpaces/go-example/
- ~/.zshrc:/home/vscode/.zshrc
- ~/.oh-my-zsh/:/home/vscode/.oh-my-zsh/
- ~/.zsh_history:/home/vscode/.zsh_history
depends_on:
- kafka
tty: true # <- keeps container running
networks:
- myNetwork
Run Code Online (Sandbox Code Playgroud)
.devcontainer/docker-compose.yml:
version: '3'
networks:
myNetwork:
name: myNetwork
services:
zookeeper:
image: confluentinc/cp-zookeeper:latest
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ports:
- 22181:2181
networks:
- myNetwork
tmpfs: "/datalog"
kafka:
image: confluentinc/cp-kafka:latest
depends_on:
- zookeeper
ports:
- 29092:29092
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
networks:
- myNetwork
depends_on:
- zookeeper
Run Code Online (Sandbox Code Playgroud)
.devcontainer/Dockerfile:
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.209.6/containers/go/.devcontainer/base.Dockerfile
# [Choice] Go version (use -bullseye variants on local arm64/Apple Silicon): 1, 1.16, 1.17, 1-bullseye, 1.16-bullseye, 1.17-bullseye, 1-buster, 1.16-buster, 1.17-buster
ARG VARIANT="1.17-bullseye"
FROM mcr.microsoft.com/vscode/devcontainers/go:0-${VARIANT}
# [Choice] Node.js version: none, lts/*, 16, 14, 12, 10
ARG NODE_VERSION="none"
RUN if [ "${NODE_VERSION}" != "none" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi
# [Optional] Uncomment this section to install additional OS packages.
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
# && apt-get -y install --no-install-recommends <your-package-list-here>
# [Optional] Uncomment the next lines to use go get to install anything else you need
# USER vscode
# RUN go get -x <your-dependency-or-tool>
# [Optional] Uncomment this line to install global node packages.
# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g <your-package-here>" 2>&1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7912 次 |
| 最近记录: |