我尝试使用Go初始化数据库。
我在postgres:alpine使用端口5433,因为5432已被另一个微服务应用程序占用。

func Init() {
    DB, err = gorm.Open(postgres.New(postgres.Config{
        DSN: "host=url_db user=gorm password=gorm dbname=gorm port=5433 sslmode=disable TimeZone=Asia/Tokyo",
    }), &gorm.Config{})
    if err != nil {
        panic(err)
    }
    autoMigration()
}
  url_db:
    build:
      context: ./api/services/url/db
      dockerfile: Dockerfile
    container_name: "url_db"
    environment:
      POSTGRES_USER: gorm
      POSTGRES_PASSWORD: gorm
      POSTGRES_DB: gorm
      POSTGRES_HOST: url_db
    ports:
      - 5433:5433
您可以确认只有5432被公开here
我试图通过创建一个新的Dockerfile来暴露5433。
FROM postgres:alpine
EXPOSE 5433
但是我得到了这个错误。
failed to initialize database, got error failed to connect to `host=url_db user=gorm database=gorm`: dial error (dial tcp 172.19.0.3:5433: connect: connection refused)
此评论:
除非将postgres实际上配置为在该端口上监听,否则仅将端口暴露在docker镜像上就不会做任何事情。 – super 5分钟前
教我标题的问题(如何在postgres:alpine image上显示新端口(不是5432)?)不是重点,所以我更新了标题。
如何使postgres在容器的新暴露端口(不是5432)上监听?

最佳答案

您有多种选择:
选项1:定义自己的postgresql.conf

  url_db:
    build:
      context: ./api/services/url/db
      dockerfile: Dockerfile
    container_name: "url_db"
    command: postgres -c "config_file=/etc/postgresql/postgresql.conf"
    environment:
      POSTGRES_USER: gorm
      POSTGRES_PASSWORD: gorm
      POSTGRES_DB: gorm
      POSTGRES_HOST: url_db
    ports:
      - 5433:5433
    volumes:
      - /path/to/config:/etc/postgresql/postgresql.conf
Postgres在容器内的/usr/share/postgresql/postgresql.conf.sample处有一个示例配置。
要运行配置:
docker run -i --rm postgres cat /usr/share/postgresql/postgresql.conf.sample > my-postgres.conf
选项1:覆盖RUN命令
  url_db:
    build:
      context: ./api/services/url/db
      dockerfile: Dockerfile
    container_name: "url_db"
    command: postgres -c port=5433
    environment:
      POSTGRES_USER: gorm
      POSTGRES_PASSWORD: gorm
      POSTGRES_DB: gorm
      POSTGRES_HOST: url_db
    ports:
      - 5433:5433

关于postgresql - 如何使postgres在容器的新暴露端口(不是5432)上监听?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64888530/

10-16 17:33
查看更多