Docker容器内RStudio连接PostgreSQL失败:主机名无法解析
问题:Docker容器内RStudio无法解析PostgreSQL主机名
问题详情
在Docker容器中运行RStudio实例时,连接公司私有PostgreSQL数据库遇到如下错误:
Error: could not translate host name "ABC-123" to address: Name or service not known
本地机器上可通过以下R代码正常连接:
# Load Libraries # renv::init() library(tidyverse) library(glue) library(dbplyr) library(odbc) library(DBI) library(RPostgreSQL) library(sendmailR) library(paws) library(config) library(fs) # renv::snapshot() con <- dbConnect(RPostgres::Postgres(), dbname = EDP_db, host = EDP_host_db, port = EDP_db_port, user = EDP_db_user, password = EDP_db_password)
Docker配置文件及运行命令
Dockerfile
FROM rocker/tidyverse:latest # environment variables ENV RENV_CONFIG_REPOS_OVERRIDE https://packagemanager.rstudio.com/cran/latest # Install dependency libraries RUN apt-get update -qq && apt-get install -y --no-install-recommends \ build-essential \ libxml2-dev \ libcurl4-openssl-dev \ libicu-dev \ libsodium-dev \ libssl-dev \ libmagick++-dev \ libudunits2-dev \ libgdal-dev \ libgeos-dev \ libproj-dev \ lbzip2 \ libpq-dev \ make \ && apt-get clean # expose port on Docker container (Ports that docker opens up) & set working directory EXPOSE 8787 EXPOSE 5610 # (Port of DB) EXPOSE 1440 RUN mkdir -p /app RUN chmod -R 755 /app WORKDIR /app/ # install R-packages into Docker container COPY renv.lock renv.lock RUN Rscript -e "install.packages('renv', repos = 'http://cran.us.r-project.org')" RUN Rscript -e "renv::restore()" # copy necessary files and data into app folder COPY daily_leads.R /app/daily_leads.R COPY config.yml /app/config.yml COPY qk526-rpms-rp-daily-leads.Rproj /app/qk526-rpms-rp-daily-leads-app.Rproj
构建与运行命令
docker build -t daily_leads_app:1.0 --build-arg HTTP_PROXY="http://LCPzen.fpl.com:10262" --build-arg HTTPS_PROXY="http://LCPzen.fpl.com:10262" . docker run --rm -d -p 8787:8787 daily_leads_app:1.0
额外信息
- 项目使用公司代理,不清楚Docker主机的网络配置类型及配置方法
- 目标数据库为公司私有库,无法本地部署,因此无法采用Docker Compose启动PostgreSQL并绑定服务名的常规解决方案
内容的提问来源于stack exchange,提问作者Eazie
相关产品推荐
相关产品推荐

