【问题标题】:Running identical docker container offline离线运行相同的 docker 容器
【发布时间】:2021-07-16 02:49:48
【问题描述】:

我在子域 (docker.domain.com) 下在线运行 docker 容器

我在将容器更新到较新版本时遇到问题,我想离线创建一个相同的容器以在本地主机上调试以查看是否可以调试问题

我遇到的问题是我在 docker-compose.yaml.env 文件中设置了基本 url 和 api url 我不知道如何将这些网址翻译成127.0.0.1 localhost

更新: docker-compose.yaml 文件

version: '3.5'

services:
  db:
    image: percona:8.0
    restart: on-failure
    environment:
      # To be picked up by percona image when creating the database
      # Must match with DB_DSN settings inside .env
      MYSQL_DATABASE:      database
      MYSQL_USER:          user
      MYSQL_PASSWORD:      sqlpass
      MYSQL_ROOT_PASSWORD: rootpass
    # healthcheck: { test: ["CMD", "mysqladmin" ,"ping", "-h", "77.68.90.188"], timeout: 20s, retries: 10 }
    # Uncomment to use local fs for data persistence
    volumes: [ "./data/db:/var/lib/mysql" ]
    networks: [ internal ]

  server:
    image: cortezaproject/corteza-server:latest
    restart: on-failure
    env_file: [ .env ]
    environment:
      # Informing Corredor where it he contact us
      CORREDOR_ADDR:                   "corredor:80"
      VIRTUAL_HOST:                    "https://subdomain.domain.tld"      
    depends_on: [ db, corredor ]
    volumes: [ "./data/server:/data" ]
    healthcheck: { test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"], timeout: 20s, retries: 10 }
    ports: [ "127.0.0.1:30500:80" ]
    networks: [ internal ]

  corredor:
    image: cortezaproject/corteza-server-corredor:latest
    restart: on-failure
    env_file: [ .env ]
    environment:
      # Informing Corredor where it he contact us
      CORREDOR_ADDR:                   "corredor:80"
    # Binds internal port to port LOCAL_DEMO_CRD_PORT on localhost
    networks: [ internal ]
    volumes: [ "./corredor:/corredor/usr" ]

  webapp:
    image: cortezaproject/corteza-webapp:latest
    restart: on-failure
    depends_on: [ server ]
    environment:
      # Monolith server in the backend, all services can be found under one base URL
      MONOLITH_API: 1
      # Configure web application with API location
      API_BASEURL:  "api-subdomain.domain.tld"
      VIRTUAL_HOST: subdomain.domain.tld
    ports: [ "127.0.0.1:30501:80" ]

networks:
  internal: {}

YAML 文件使用我的网站 URL 的子域 理想情况下,我希望保持完全相同的设置,但通过 WAMP 在本地运行以调试升级问题

我目前在本地运行它并且更新工作正常,但我认为我在本地 YAML 文件中更改了太多

更新2 docker-compose.override.yaml

Version: '3.5'

server:
environment:
  VIRTUAL_HOST:                    "localhost"   

 webapp:
environment:
  API_BASEURL:  "localhost/api"
  VIRTUAL_HOST: localhost

【问题讨论】:

  • 有很多选择。你为什么不分享你的docker-compose.yml
  • @im_baby 我已将 YAML 文件添加到问题中

标签: docker docker-compose environment


【解决方案1】:

在您的情况下,我建议使用docker-compose.override.yml。这允许您保持生产文件不变,但为您的本地环境设置特定指令。

例如:

docker-compose.override.yml

services:
  webapp:
    environment:
      API_BASEURL: "localhost/api"

参考:

https://docs.docker.com/compose/extends/#multiple-compose-files

作为建议,我还会避免在 docker-compose.yml 和单独的 .env 文件之间拆分环境变量。选择一个并坚持下去。通常,您会随着时间的推移添加变量,而在 YAML 中执行此操作会变得很笨拙,因此请一次性将它们全部移至单独的文件中。

【讨论】:

  • 谢谢@im_baby,这是否意味着我将使用完全相同的docker-compose.yaml 文件并设置一个docker-compose.override.yaml 文件,该文件应该只包含我想要更改的详细信息?我在上面添加的内容看起来是否正确?
  • 没错。请阅读文档以便您完全理解。
猜你喜欢
  • 1970-01-01
  • 2021-12-10
  • 1970-01-01
  • 2022-10-04
  • 1970-01-01
  • 2018-04-10
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多