为了账号安全,请及时绑定邮箱和手机立即绑定

VSCode Remote - 添加到现有 - 打破容器

VSCode Remote - 添加到现有 - 打破容器

PHP
UYOU 2023-05-26 16:29:34
我有一个使用 docker-compose 部署运行的 LAMP 应用程序。docker-compose.yml:app_web:    depends_on:      - app_db    build: ./web    ports:       - '3000:80'    volumes:      - ./web/www:/var/www/html    environment:      - MYSQL_DATABASE=appdb      - MYSQL_USER=appuser      - MYSQL_PASSWORD=password文件:  FROM php:7.4-apache  WORKDIR /var/www  RUN apt-get update \    && apt-get install -y wget \    && rm -rf /var/lib/apt/lists/*  RUN apt-get update \      && apt-get install -y git  RUN docker-php-ext-install pdo pdo_mysql mysqli  RUN a2enmod rewrite  COPY ./www /var/www/html这非常有效,为localhost:3000我提供了一个可用的网络应用程序。我想使用 VSCode 远程容器来改进我的调试。第 1 步是将它添加到我的 docker 实例中。我已经点击Remote Containers: Add Development Container Configuration并选择了“From docker-compose.yaml”然后选择了app_web。然后我可以在容器中重新打开。这启动了一些在 Docker Desktop 中看起来像以前一样的东西,但是,Apache 没有运行,当我启动它时service apache2 start它无法访问我从 PHP 设置的 ENV 变量,当我最初启动它。
查看完整描述

1 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

啊,所以,稍后想一想,.devcontainer\docker-compose.yml 以:


 # Overrides default command so things don't shut down after the process ends.

    command: /bin/sh -c "while sleep 1000; do :; done"

默认命令应该是 apache2-foreground,它在 php 图像中启动 Apache2。所以删除它,并依靠主 dockerfile 末尾的命令来获取 php 图像解决了这个问题。


.devcontainer\docker-compose.yml


#-------------------------------------------------------------------------------------------------------------

# Copyright (c) Microsoft Corporation. All rights reserved.

# Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information.

#-------------------------------------------------------------------------------------------------------------


version: '3'

services:

  # Update this to the name of the service you want to work with in your docker-compose.yml file

  app_web:

    # If you want add a non-root user to your Dockerfile, you can use the "remoteUser"

    # property in devcontainer.json to cause VS Code its sub-processes (terminals, tasks, 

    # debugging) to execute as the user. Uncomment the next line if you want the entire 

    # container to run as this user instead. Note that, on Linux, you may need to 

    # ensure the UID and GID of the container user you create matches your local user. 

    # See https://aka.ms/vscode-remote/containers/non-root for details.

    #

    # user: vscode


    # Uncomment if you want to override the service's Dockerfile to one in the .devcontainer 

    # folder. Note that the path of the Dockerfile and context is relative to the *primary* 

    # docker-compose.yml file (the first in the devcontainer.json "dockerComposeFile"

    # array). The sample below assumes your primary file is in the root of your project.

    #

    # build:

    #   context: .

    #   dockerfile: .devcontainer/Dockerfile


    volumes:

      # Update this to wherever you want VS Code to mount the folder of your project

      - .:/workspace:cached


      # Uncomment the next line to use Docker from inside the container. See https://aka.ms/vscode-remote/samples/docker-from-docker-compose for details.

      # - /var/run/docker.sock:/var/run/docker.sock 


    # Uncomment the next four lines if you will use a ptrace-based debugger like C++, Go, and Rust.

    # cap_add:

    #   - SYS_PTRACE

    # security_opt:

    #   - seccomp:unconfined


    # LEAVE THE DEFAULT COMMAND ALONE!


查看完整回答
反对 回复 2023-05-26
  • 1 回答
  • 0 关注
  • 87 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信