在 docker compose 中不使用 "sleep infinity" 命令启动远程容器
Start remote container without "sleep infinity" command in docker compose
在 VS Code 中使用远程容器,我想在没有默认 sleep infinity
命令的情况下启动一个 Ubuntu 容器(稍后启动 Flask 服务器),这样我以后可以从主持人。
TL;DR
如果我从 docker-compose.yml
中删除 sleep infinity
命令,容器将无法启动,例如。 G。
Run: docker exec 12d95e1f14877bc4af7fa62e59f81b7ebf0f8983aa357eb077a09bf1951e4370 test -d /root/.vscode-server
Error response from daemon: Container 12d95e1f14877bc4af7fa62e59f81b7ebf0f8983aa357eb077a09bf1951e4370 is not running
.. 但是使用 sleep infinity
命令,我正在启动的 Flask 服务器无法使用 devsettings.json
.
中的 appPort
转发它的端口
相关 GitHub 问题:
https://github.com/microsoft/vscode-remote-release/issues/319
https://github.com/microsoft/vscode-remote-release/issues/259
Setup
VS Code 容器的图像:Docker in Docker compose
图像在其 Docker 文件中:ubuntu:bionic
Dockerfile
FROM ubuntu:bionic
# Avoid warnings by switching to noninteractive
ENV DEBIAN_FRONTEND=noninteractive
# Docker Compose version
ARG COMPOSE_VERSION=1.24.0
...
# Configure apt and install packages
RUN apt-get update \
&& apt-get -y install --no-install-recommends apt-utils 2>&1 \
....
# Switch back to dialog for any ad-hoc use of apt-get
ENV DEBIAN_FRONTEND=dialog
我尝试在Docker文件中添加ENTRYPOINT ["bash", "/bin/bash"]
,但是没有效果。
devsettings.json
{
"name": "Docker in Docker Compose",
"dockerComposeFile": "docker-compose.yml",
"service": "my-service",
"workspaceFolder": "/workspace",
// default command is "sleep infinity", can't use that as Flask should be accessible
"overrideCommand": false,
"appPort": ["5000:5000"],
"extensions": [
"peterjausovec.vscode-docker",
"ms-python.python"
],
"settings": {
"remote.extensionKind": {
"peterjausovec.vscode-docker": "workspace"
}
}
}
docker-compose.yml
version: '3'
services:
my-service:
build:
context: .
dockerfile: Dockerfile
volumes:
# Update this to wherever you want VS Code to mount the folder of your project
- ..:/workspace
# This lets you avoid setting up Git again in the container
- ~/.gitconfig:/root/.gitconfig
# Forwards the local Docker socket to the container.
- /var/run/docker.sock:/var/run/docker.sock
# Overrides default command so things don't shut down after the process ends.
command: sleep infinity
它不起作用的原因是你没有在 docker-compose.yml
中公开端口。
语法是:
services:
service_name:
ports:
- "8080:80"
尝试使用命令启动 jupyter notebook 时遇到类似情况,找到了一种解决方法,将 sleep inifinity
放在最后。
./docker-compose.yml
....
ports:
- 8888:8888
command: bash -c "jupyter notebook --ip 0.0.0.0 --port 8888 --no-browser --allow-root && sleep infinity"
在 VS Code 中使用远程容器,我想在没有默认 sleep infinity
命令的情况下启动一个 Ubuntu 容器(稍后启动 Flask 服务器),这样我以后可以从主持人。
TL;DR
如果我从 docker-compose.yml
中删除 sleep infinity
命令,容器将无法启动,例如。 G。
Run: docker exec 12d95e1f14877bc4af7fa62e59f81b7ebf0f8983aa357eb077a09bf1951e4370 test -d /root/.vscode-server
Error response from daemon: Container 12d95e1f14877bc4af7fa62e59f81b7ebf0f8983aa357eb077a09bf1951e4370 is not running
.. 但是使用 sleep infinity
命令,我正在启动的 Flask 服务器无法使用 devsettings.json
.
appPort
转发它的端口
相关 GitHub 问题:
https://github.com/microsoft/vscode-remote-release/issues/319
https://github.com/microsoft/vscode-remote-release/issues/259
Setup
VS Code 容器的图像:Docker in Docker compose
图像在其 Docker 文件中:ubuntu:bionic
Dockerfile
FROM ubuntu:bionic
# Avoid warnings by switching to noninteractive
ENV DEBIAN_FRONTEND=noninteractive
# Docker Compose version
ARG COMPOSE_VERSION=1.24.0
...
# Configure apt and install packages
RUN apt-get update \
&& apt-get -y install --no-install-recommends apt-utils 2>&1 \
....
# Switch back to dialog for any ad-hoc use of apt-get
ENV DEBIAN_FRONTEND=dialog
我尝试在Docker文件中添加ENTRYPOINT ["bash", "/bin/bash"]
,但是没有效果。
devsettings.json
{
"name": "Docker in Docker Compose",
"dockerComposeFile": "docker-compose.yml",
"service": "my-service",
"workspaceFolder": "/workspace",
// default command is "sleep infinity", can't use that as Flask should be accessible
"overrideCommand": false,
"appPort": ["5000:5000"],
"extensions": [
"peterjausovec.vscode-docker",
"ms-python.python"
],
"settings": {
"remote.extensionKind": {
"peterjausovec.vscode-docker": "workspace"
}
}
}
docker-compose.yml
version: '3'
services:
my-service:
build:
context: .
dockerfile: Dockerfile
volumes:
# Update this to wherever you want VS Code to mount the folder of your project
- ..:/workspace
# This lets you avoid setting up Git again in the container
- ~/.gitconfig:/root/.gitconfig
# Forwards the local Docker socket to the container.
- /var/run/docker.sock:/var/run/docker.sock
# Overrides default command so things don't shut down after the process ends.
command: sleep infinity
它不起作用的原因是你没有在 docker-compose.yml
中公开端口。
语法是:
services:
service_name:
ports:
- "8080:80"
尝试使用命令启动 jupyter notebook 时遇到类似情况,找到了一种解决方法,将 sleep inifinity
放在最后。
./docker-compose.yml
....
ports:
- 8888:8888
command: bash -c "jupyter notebook --ip 0.0.0.0 --port 8888 --no-browser --allow-root && sleep infinity"