问题描述
我是docker的新手,被困在正确暴露psiturk的端口上。
我有一个docker-compose.yml文件,该文件创建了psiturk容器,Nginx容器,管理员容器和MysqL容器。我正在尝试在mTurk上的沙盒模式下运行psiturk实验。服务器无法连接。我已经暴露了端口。当我在Docker之外运行psiturk时,我可以在沙箱中运行一个实验,因此它不是我计算机的防火墙。
ports:
- 22362:22362
到psiturk容器,但是没有用。
对于我的docker-compose.yml文件:
version: '3'
services:
psiturk:
container_name: my-experiment
build: .
volumes:
- ./exp:/exp
tty: true
stdin_open: true
restart: unless-stopped
Nginx:
container_name: my-experiment-Nginx
image: Nginx:latest
ports:
- 80:80
volumes:
- ./exp:/var/www/exp:ro
- ./default.conf:/etc/Nginx/conf.d/default.conf
restart: unless-stopped
db:
container_name: my-experiment-db
image: MysqL:5.7
volumes:
- ./data/db:/var/lib/MysqL
environment:
MysqL_ROOT_PASSWORD: anothersafepassword
MysqL_DATABASE: shared4data
MysqL_USER: jorja
MysqL_PASSWORD: totallysafepassword
restart: unless-stopped
adminer:
container_name: my-experiment-adminer
image: adminer:latest
ports:
- 127.0.0.1:8080:8080
对于我的dockerfile:
FROM python:3.6-stretch
LABEL maintainer="Jorja Shires <[email protected]>" version="1.0"
ENV PSITURK_GLOBAL_CONfig_LOCATION "/exp"
workdir "/exp"
RUN pip install \
psiturk==2.3.8 \
pyMysqL==0.10.0 \
python-Levenshtein==0.12.0 \
&& rm -rf ~/.cache/pip
CMD ["bash"]
EXPOSE 22362
EXPOSE 80
对于我的psiturk配置文件:
[Server Parameters]
host = 0.0.0
port = 22362
cutoff_time = 30
logfile = server.log
loglevel = 2
debug = true
threads = auto
adserver_revproxy_host = MyStaticIPAddress
adserver_revproxy_port = 80
[Shell Parameters]
launch_in_sandBox_mode = true
#bonus_message = "Thanks for participating!"
use_psiturk_ad_server = true
ad_location = false
解决方法
哦,嘿,您好像在使用我的实验模板:https://github.com/paxtonfitzpatrick/psiturk-experiment-template
我认为这里有两个问题:
-
在您的
exp/config.txt
文件中,“host
”字段为0.0.0
,但应为0.0.0.0
。 -
几个月前对 psiTurk Python 包和 psiTurk 广告服务器(托管您的
ad.html
)进行了更新,这破坏了许多现有的实验设置。特别是,根据 psiTurk README:由于 psiturk 广告服务器的托管服务提供商实施的更改,低于 v2.3.12 的版本将无法发布 HIT。
因此安装在您的
Dockerfile
(2.3.8) 中的 psiTurk 版本将不再有效。我会尽快更新实验模板库,但从当前版本升级的一般步骤是:- 在您的
Dockerfile
中,将psiturk==2.3.8
替换为psiturk==2.3.12
- 删除来自
exp/templates/ad.html
的所有评论(无论出于何种原因,它们都会导致更新后的广告服务器出现问题) - 在
config.txt
中,在[Shell Parameters]
下,确保use_psiturk_ad_server
显式设置为true
并且ad_location
显式设置为false
立>
- 在您的
还值得注意的是 psiTurk v3.0 已经完全放弃了对 psiturk.org 广告服务器的支持,因此在未来的某个时间点,psiTurk 维护人员可能会停止管理它,而您将必须设置您自己的广告服务器 (the docs recommend Heroku)。但是现在(希望还有一段时间!)上述步骤应该足够了。