Docker与外部postgres数据库和似是而非的组合

pvcm50d1  于 2023-10-16  发布在  Docker
关注(0)|答案(1)|浏览(130)

嗨,我正在努力配置Docker compose,以便在Debian 11上使用外部postgres数据库。容器似乎没有正确解析host.docker.internal。我第一次运行容器时,它工作正常,因为我使用的IP 172.17.0.1作为数据库,容器像往常一样在www.example.com上启动172.17.0.4,但每次我运行docker-compose时,它都会增加IP(172.18.0.4 172.19.0.4... 172.28.0.4)。
我尝试过的解决方案是:

  • make host.docker.internal工作
  • 找到一种方法,将合理的容器IP地址强制为172.17.0.4,并将172.17.0.1用于数据库。
  • 使主机模式与localhost工作,但这不是最安全的一个

这是日志

  1. Loading plausible..
  2. Starting dependencies..
  3. Starting repos..
  4. Running migrations for Elixir.Plausible.Repo
  5. 06:57:08.578 [error] Postgrex.Protocol (#PID<0.164.0>) failed to connect: ** (DBConnection.ConnectionError) tcp connect (host.docker.internal:5432): connection refused - :econnrefused
  6. 06:57:08.578 [error] Postgrex.Protocol (#PID<0.163.0>) failed to connect: ** (DBConnection.ConnectionError) tcp connect (host.docker.internal:5432): connection refused - :econnrefused
  7. 06:57:09.988 [error] Postgrex.Protocol (#PID<0.163.0>) failed to connect: ** (DBConnection.ConnectionError) tcp connect (host.docker.internal:5432): connection refused - :econnrefused
  8. 06:57:10.343 [error] Postgrex.Protocol (#PID<0.164.0>) failed to connect: ** (DBConnection.ConnectionError) tcp connect (host.docker.internal:5432): connection refused - :econnrefused
  9. 06:57:11.505 [error] Could not create schema migrations table. This error usually happens due to the following:
  10. * The database does not exist
  11. * The "schema_migrations" table, which Ecto uses for managing
  12. migrations, was defined by another library
  13. * There is a deadlock while migrating (such as using concurrent
  14. indexes with a migration_lock)

docker-compose.yml

  1. version: "3.3"
  2. #networks:
  3. # lan_access:
  4. # driver: bridge
  5. services:
  6. mail:
  7. image: bytemark/smtp
  8. restart: always
  9. # plausible_db:
  10. # supported versions are 12, 13, and 14
  11. # image: postgres:14-alpine
  12. # restart: always
  13. # volumes:
  14. # - db-data:/var/lib/postgresql/data
  15. # environment:
  16. # - POSTGRES_PASSWORD=postgres
  17. plausible_events_db:
  18. image: clickhouse/clickhouse-server:23.3.7.5-alpine
  19. restart: always
  20. volumes:
  21. - event-data:/var/lib/clickhouse
  22. - ./clickhouse/clickhouse-config.xml:/etc/clickhouse-server/config.d/logging.xml:ro
  23. - ./clickhouse/clickhouse-user-config.xml:/etc/clickhouse-server/users.d/logging.xml:ro
  24. ulimits:
  25. nofile:
  26. soft: 262144
  27. hard: 262144
  28. plausible:
  29. image: plausible/analytics:v2.0
  30. restart: always
  31. command: sh -c "sleep 10 && /entrypoint.sh db migrate && /entrypoint.sh run"
  32. #command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"
  33. depends_on:
  34. # - plausible_db
  35. - plausible_events_db
  36. - mail
  37. # networks:
  38. # - lan_access
  39. # - default
  40. # network_mode: bridge
  41. # network_mode: host
  42. ports:
  43. - 8001:8000
  44. env_file:
  45. - plausible-conf.env
  46. extra_hosts:
  47. - "host.docker.internal:host-gateway"
  48. volumes:
  49. # db-data:
  50. # driver: local
  51. event-data:
  52. driver: local

下面是可扩展的-conf.env

  1. BASE_URL=https://analytics.example.com
  2. SECRET_KEY_BASE=SECRET
  3. DATABASE_URL=postgres://plausible:[email protected]:5432/plausible_db
  4. #DATABASE_URL=postgres://plausible:[email protected]::5432/plausible_db
  5. #DATABASE_URL=postgres://plausible:[email protected]:5432/plausible_db
  6. MAILER_NAME=plausible
  7. SMTP_HOST_ADDR=localhost
  8. SMTP_HOST_PORT=25

你知道我的配置有什么问题吗?

l2osamch

l2osamch1#

请看原文页面和代码:

运行时间:

  1. git clone https://github.com/plausible/hosting
  2. cd hosting
  3. # to create secret key to paste SECRET_KEY_BASE in plausible-conf.env
  4. openssl rand -base64 64 | tr -d '\n' ; echo
  5. docker-compose up -d

docker-compose.yaml(我使用的):

  1. version: "3.3"
  2. services:
  3. mail:
  4. image: bytemark/smtp
  5. restart: always
  6. plausible_db:
  7. # supported versions are 12, 13, and 14
  8. image: postgres:14-alpine
  9. restart: always
  10. volumes:
  11. - db-data:/var/lib/postgresql/data
  12. environment:
  13. - POSTGRES_PASSWORD=postgres
  14. plausible_events_db:
  15. image: clickhouse/clickhouse-server:23.3.7.5-alpine
  16. restart: always
  17. volumes:
  18. - event-data:/var/lib/clickhouse
  19. - ./clickhouse/clickhouse-config.xml:/etc/clickhouse-server/config.d/logging.xml:ro
  20. - ./clickhouse/clickhouse-user-config.xml:/etc/clickhouse-server/users.d/logging.xml:ro
  21. ulimits:
  22. nofile:
  23. soft: 262144
  24. hard: 262144
  25. plausible:
  26. image: plausible/analytics:v2.0
  27. restart: always
  28. command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"
  29. depends_on:
  30. - plausible_db
  31. - plausible_events_db
  32. - mail
  33. ports:
  34. - 8000:8000
  35. env_file:
  36. - plausible-conf.env
  37. volumes:
  38. db-data:
  39. driver: local
  40. event-data:
  41. driver: local

可扩展的conf.env(我使用的):

当您使用DB设置时,plausible/analytics:v2.0无法正常运行。那就把它拿走

  1. BASE_URL=http://localhost
  2. SECRET_KEY_BASE=AlxO9FylRkXEzARzNoYFsGQHB8ZaS1wiKt31DmnTaSYOafDopfmxmf1hyF3AF7zIsu9elF+teLRmw5DL0ZJv3Q==

运行容器:

浏览器(http://localhost:8080),工作方式:

密码:

如果你想调试它,在运行docker-compose up -d后,运行docker container ls -a获取plausible/analytics:v2.0的容器id(例如:a14 d4 b63 ea 97),然后运行docker logs a14查看错误/logs。
运行“compose up”后,40秒后,如果似是而非/analytics:v2.0一次又一次地重新启动,则其上存在问题,并使用“docker logs”命令查看。

连接到另一个Postgresql容器:(此部分添加在注解后)

创建一个新的网桥网络,其中:

  1. docker network create mynetwork

添加到docker-compose.yml文件:

  1. networks:
  2. - mynetwork:
  3. services:
  4. plausible_db:
  5. ...
  6. networks:
  7. - mynetwork

plausible-conf.env:

  1. DATABASE_URL=postgresql://postgres:postgres@<PostgresqlContainerName>:5432/plausible_db

通过此配置,plausible/analytics:v2.0可以通过docker网络连接Postgresql容器。
运行后,请看一下plausible/analytics:v2.0 container,里面有docker logs
数据库连接完成(因为我在PostgreSQL容器上创建了plausible_db,并且没有数据库连接错误),但数据库上存在迁移问题。我认为这与Docker网络或DB连接无关。这是DB迁移问题。

展开查看全部

相关问题